flat_multiset_emplace
flat_multiset_emplace (std::flat_multiset::emplace — 제자리 구성 삽입)
std::flat_multiset에 새 원소를 변환식으로 제자리(in-place) 구성해 삽입하는 멤버 함수예요. 주어진 인자 args로 value_type 객체를 만들어 넣어요.
출처: cppreference
본문
시그니처는 다음과 같아요.
template< class... Args >
iterator emplace( Args&&... args ); // (since C++23)
주어진 args로 제자리 구성된 새 원소를 컨테이너에 삽입해요.
먼저 std::forward<Args>(args)...로 value_type 타입의 객체 t를 초기화한 다음, 다음과 같이 t를 삽입해요.
auto it = ranges::upper_bound(c, t, compare);
c.insert(it, std::move(t));
이 오버로드는 std::is_constructible_v<value_type, Args...>가 true일 때만 오버로드 해석에 참여해요. emplace를 조심히 쓰면 불필요한 복사나 이동 연산을 피하면서 새 원소를 구성할 수 있어요.
매개변수
args: 원소의 생성자에 전달할 인자들.
반환값
삽입된 원소를 가리키는 이터레이터.
복잡도
내부 컨테이너 크기에 대해 로그(logarithmic)에다가 원소 복사/이동에 대한 비용이 추가돼요.