multiset_emplace

multiset_emplace (std::multiset::emplace — 제자리 구성 삽입)

std::multiset에 새 원소를 변환식으로 제자리(in-place) 구성해 삽입하는 멤버 함수예요. 중복 키를 허용하므로 항상 삽입돼요.

출처: cppreference

본문

시그니처는 다음과 같아요.

template< class... Args >
iterator emplace( Args&&... args );   // (since C++11)

주어진 args로 제자리 구성된 새 원소를 컨테이너에 삽입해요. 새 원소의 생성자는 emplace에 전달된 것과 똑같은 인자로, std::forward<Args>(args)...로 전달해 호출돼요. emplace를 조심히 쓰면 불필요한 복사나 이동 연산을 피하면서 새 원소를 구성할 수 있어요. 이터레이터나 참조는 무효화되지 않아요.

매개변수

  • args: 원소의 생성자에 전달할 인자들.

반환값

삽입된 원소를 가리키는 이터레이터.

예외

어떤 이유로든 예외가 던져지면 이 함수는 아무 효과도 없어요(강한 예외 안전 보장).

복잡도

컨테이너 크기에 대해 로그(logarithmic)예요.

예제

#include <iostream>
#include <set>
int main()
{
    std::multiset<int> s;
    s.emplace(1);
    s.emplace(1);   // 중복 허용
    std::cout << s.count(1) << '\n';   // 2
}

더 알아보기 (Learn more)

cppreference