C++ Stack emplace() 函数使用方法及示例

C++ STL Stack(栈)

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++ STL Stack(栈)