當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ Stack emplace()用法及代碼示例


C++ Stack emplace() 函數在當前棧頂元素上方的棧頂添加一個新元素。現在,我們有一個已經存在元素的堆棧,我們希望在堆棧中插入或推送一個新元素,為此我們使用這個函數。

用法

template <class... Args> void emplace (Args&&... args);

參數

args:參數轉發構造新元素的參數。即由 args 指定的元素被插入堆棧中當前頂部元素的上方。新插入的元素現在成為頂部元素,並在其上執行所有推送和彈出操作。

返回值

該函數僅用於添加新元素,不返回任何值。因此函數的返回類型是void。

例子1

//程序通過在棧頂添加兩個簡單的字符串並打印它們來說明emplace函數的使用。

#include<iostream>
#include<stack>
#include<string>
int main()
{
	std::stack<std::string> newstack;
	newstack.emplace (?I am the first line?);
	newstack.emplace (?I am the second one?);
	std::cout << ?Contents of newstack:\n?;
	while (!newstack.empty () )
	{
		std::cout << newstack.top () << ?\n?;
		newstack.pop ();
	}
	return 0;
}

輸出:

Contents of newstack:
I am the second one
I am the first line

例子2

//程序通過在上麵插入11的表格然後分別打印來說明emplace函數的使用。

#include<iostream>
#include<stack>
#include<string>
int main()
{
	std::stack<std::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?);
	std::cout << ?Contents of newstack:\n?;
	 std::cout <<?Table of 11?;

	while (!newstack.empty () )
	{
		std::cout << newstack.top () << ?\n?;
		newstack.pop ();
	}
	return 0;
}

輸出:

Contents of newstack:
Table of 11121
99
88
77
66
55
44
33
22
11

例子3

//程序通過在棧頂添加兩個簡單的字符串並打印它們來說明emplace函數的使用。

#include<iostream>
#include<stack>
#include<string>
int main()
{
	std::stack<std::string> newstack;
	newstack.emplace ("We are here to see the application use of emplace function in stacks");
	newstack.emplace ("The function adds new elements are the top of the stack");
	while (!newstack.empty () )
	{
		std::cout << newstack.top () << "\n";
		newstack.pop ();
	}
	return 0;
}

輸出:

The function adds new elements are the top of the stack         
We are here to see the application use of emplace function in stacks 

複雜度

對 emplace_back 進行一次調用。該函數用於插入一個新元素,這是通過進行一次調用來完成的。

數據競爭

堆棧中存在的所有元素都被修改。由於元素被添加到頂部,因此所有其他元素的相應位置也發生了變化。

異常安全

提供等同於對底層容器對象執行的操作的保證。





相關用法


注:本文由純淨天空篩選整理自 C++ Stack emplace() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。