CppDS.com

C++ 98 11 14 17 20 手册

std::stack<T,Container>::emplace

来自cppreference.com
< cpp‎ | container‎ | stack

template< class... Args >
void emplace( Args&&... args );
(C++11 起)
(C++17 前)
template< class... Args >
decltype(auto) emplace( Args&&... args );
(C++17 起)

推入新元素到 stack 顶。原位构造元素,即不进行移动或复制操作。以与提供给函数者准确相同的参数调用元素的构造函数。

等效地调用 c.emplace_back(std::forward<Args>(args)...);

参数

args - 转发给元素构造函数的参数

返回值

(无) (C++17 前)
上述对 Container::emplace_back 的调用返回的值或引用,若它存在。 (C++17 起)

复杂度

等同于 Container::emplace_back 的复杂度。

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

DR 应用于 出版时的行为 正确行为
LWG 2783 C++17 emplace 返回 reference ,破坏与 C++17 前容器的兼容性 返回 decltype(auto)

参阅

向栈顶插入元素
(公开成员函数)
删除栈顶元素
(公开成员函数)
关闭