C ++堆栈 emplace()函数在当前顶部元素上方的堆栈顶部添加一个新元素。现在,我们有了一个已经存在元素的堆栈,我们希望在堆栈中插入或推入一个新元素,为此,我们使用了此函数。
语法
template <class... Args> void emplace (Args&&... args);
参量
args:参数转发用于构造新元素的参数。也就是说,由args指定的元素将插入到当前顶部元素上方的堆栈中。现在,新插入的元素成为顶部元素,并且所有推入和弹出操作都在其上执行。
返回值
该函数仅用于添加新元素,不返回任何值。因此,该函数的返回类型为void。
实例1
//该程序通过在堆栈顶部添加两个简单的字符串并进行打印来说明emplace函数的用法。
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{
stack<string> newstack;
newstack.emplace ("我是第一个");
newstack.emplace ("我是第二个");
cout << "newstack的内容: \n";
while (!newstack.empty () )
{
cout << newstack.top () << "\n";
newstack.pop ();
}
return 0;
}
输出:
newstack的内容:
我是第二个
我是第一个
实例2
//该程序通过将11的表插入到,然后分别进行打印来说明emplace函数的用法。
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{
stack<string> newstack;
newstack.emplace("11");
newstack.emplace("22");
newstack.emplace("33");
newstack.emplace("44");
newstack.emplace("55");
newstack.emplace("66");
newstack.emplace("77");
newstack.emplace("88");
newstack.emplace("99");
newstack.emplace("121");
cout << "newstack的内容: \n";
cout << "Table of 11";
while (!newstack.empty())
{
cout << newstack.top() << "\n";
newstack.pop();
}
return 0;
}
输出:
newstack的内容:
Table of 11121
99
88
77
66
55
44
33
22
11
实例3
//该程序通过在堆栈顶部添加两个简单的字符串并进行打印来说明emplace函数的用法。
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{
stack<string> newstack;
newstack.emplace ("我们在这里可以看到emplace函数在堆栈中的应用");
newstack.emplace ("函数添加的新元素位于堆栈的顶部");
while (!newstack.empty () )
{
cout << newstack.top () << "\n";
newstack.pop ();
}
return 0;
}
输出:
函数添加的新元素位于堆栈的顶部 我们在这里可以看到emplace函数在堆栈中的应用
复杂
对emplace_back进行了一次调用。该函数用于插入新元素,这是通过进行一次调用来完成的。
数据争用
堆栈中存在的所有元素均被修改。由于该元素被添加到顶部,因此所有其他元素的相应位置也发生了变化。
异常安全
提供与在底层容器对象上执行的操作等效的保证。
C++ map crbegin() 函数 C++ map cbegin() 函数
展开全部