list_emplace

list_emplace (std::list::emplace — 지정 위치 제자리 삽입)

std::list에서 지정한 위치 pos 바로 앞에 새 원소를 제자리(in-place) 구성해 삽입하는 멤버 함수예요. 복사·이동 없이 바로 만들어 넣어요.

출처: cppreference

본문

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

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

pos 바로 앞에 새 원소를 컨테이너에 삽입해요. 원소는 std::allocator_traits::construct를 통해 구성되며, placement new로 컨테이너가 제공한 위치에 제자리 구성돼요. 인자 args...std::forward<Args>(args)...로 생성자에 전달돼요. args...는 컨테이너의 어떤 값에 직접·간접적으로 참조할 수 있어요.

매개변수

  • pos: 새 원소가 삽입될 위치 바로 앞을 가리키는 이터레이터
  • args: 원소의 생성자에 전달할 인자들.

반환값

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

복잡도

상수(constant)예요.

예제

#include <list>
#include <iostream>
#include <string>
int main()
{
    std::list<std::string> l{"a", "c"};
    auto it = l.begin();
    ++it;                       // "c"를 가리킴
    l.emplace(it, "b");         // "b"를 "c" 앞에 삽입
    for (auto const& s : l) std::cout << s << ' ';   // a b c
}

더 알아보기 (Learn more)

cppreference