deque::emplace_front
deque::emplace_front (앞에 제자리 생성 추가)
컨테이너의 맨 앞에 새 요소를 제자리 생성해 추가하는 멤버 함수예요. <deque> 헤더, C++11부터.
출처: cppreference
본문
emplace_front는 컨테이너의 시작 부분에 새 요소를 삽입해요.
template< class... Args >
void emplace_front( Args&&... args ); // (until C++17)
template< class... Args >
reference emplace_front( Args&&... args ); // (since C++17)
C++17부터는 새로 추가된 요소에 대한 참조를 반환해요. 요소는 std::allocator_traits::construct를 통해, 전형적으로 placement new로 컨테이너가 제공하는 위치에 제자리 생성돼요. 인자 args...는 std::forward<Args>(args)...로 생성자에 전달돼요.
- 모든 반복자(끝 반복자 포함)가 무효화되지만, 참조는 무효화되지 않아요.
- 복잡도: 상수 시간.
std::deque<std::pair<int,int>> d;
d.emplace_front(9, 9); // 앞에 {9,9} 제자리 생성해 삽입
deque는 앞쪽 삽입이 상수 시간이라 vector에서 불가능한 앞쪽 제자리 삽입이 가능해요. push_front의 제자리 버전이라고 보면 돼요.