stack_emplace
stack_emplace (std::stack::emplace — top에 제자리 삽입)
std::stack의 top에 새 원소를 제자리(in-place) 구성해 삽입하는 멤버 함수예요. c.emplace_back(std::forward<Args>(args)...)와 동등해요.
출처: cppreference
본문
시그니처는 다음과 같아요.
template< class... Args >
void emplace( Args&&... args ); // (since C++11) (until C++17)
template< class... Args >
decltype(auto) emplace( Args&&... args ); // (since C++17)
새 원소를 스택의 top에 제자리 구성해 push해요. c.emplace_back(std::forward<Args>(args)...)와 동등해요.
반환값
C++17부터는 decltype(auto)로, 내부 컨테이너의 emplace_back(C++17 이후)이 반환하는 참조를 그대로 돌려줘요.
복잡도
Container::emplace_back의 복잡도와 같아요.
예제
#include <iostream>
#include <stack>
#include <string>
int main()
{
std::stack<std::string> s;
s.emplace("a");
s.emplace("b");
std::cout << s.top() << '\n'; // b
}