堆栈是一种具有LIFO(后进先出)类型的容器适配器,其中在一端添加了一个新元素,而(顶部)仅从该端删除了一个元素。
stack::emplace()
此函数用于将新元素插入堆栈容器,新元素添加到堆栈顶部。
用法:
stackname.emplace(value) 参数: The element to be inserted into the stack is passed as the parameter. Result: The parameter is added to the stack at the top position.
例子:
Input :mystack{1, 2, 3, 4, 5}; mystack.emplace(6); Output:mystack = 6, 5, 4, 3, 2, 1 Input :mystack{}; mystack.emplace(4); Output:mysstack = 4
Note: In stack container, the elements are printed in reverse order because the top is printed first then moving on to other elements.
错误和异常
1.它具有强大的异常保证,因此,如果引发异常,则不会进行任何更改。
2.参数应与容器的类型相同,否则将引发错误。
// CPP program to illustrate
// Implementation of emplace() function
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> mystack;
mystack.emplace(1);
mystack.emplace(2);
mystack.emplace(3);
mystack.emplace(4);
mystack.emplace(5);
mystack.emplace(6);
// stack becomes 1, 2, 3, 4, 5, 6
// printing the stack
cout << "mystack = ";
while (!mystack.empty()) {
cout << mystack.top() << " ";
mystack.pop();
}
return 0;
}
输出:
6 5 4 3 2 1
时间复杂度:O(1)
stack::emplace()和stack::push()函数之间的差异。
当push()函数将值或传递给该函数的参数的副本插入顶部的容器时,emplace()函数构造一个新元素作为参数的值,然后将其添加到容器的顶部。
应用:
给定多个整数,请使用emplace()将其添加到堆栈中,并在不使用size函数的情况下找到堆栈的大小。
Input:5, 13, 0, 9, 4 Output:5
算法
1.使用emplace()一对一地将给定元素插入堆栈容器。
2.继续弹出堆栈中的元素直到其变空,然后递增计数器变量。
3.打印计数器变量。
// CPP program to illustrate
// Application of emplace() function
#include <iostream>
#include <stack>
using namespace std;
int main() {
int c = 0;
// Empty stack
stack<int> mystack;
mystack.emplace(5);
mystack.emplace(13);
mystack.emplace(0);
mystack.emplace(9);
mystack.emplace(4);
// stack becomes 5, 13, 0, 9, 4
// Counting number of elements in queue
while (!mystack.empty()) {
mystack.pop();
c++;
}
cout << c;
}
输出:
5
相关用法
- C++ set::emplace()用法及代码示例
- C++ map emplace()用法及代码示例
- C++ priority_queue emplace()用法及代码示例
- C++ unordered_map emplace()用法及代码示例
- C++ multimap::emplace()用法及代码示例
- C++ queue::emplace()用法及代码示例
- C++ deque emplace用法及代码示例
- C++ multiset::emplace()用法及代码示例
- C++ unordered_set emplace()用法及代码示例
- C++ unordered_multiset emplace()用法及代码示例
- C++ unordered_multimap emplace()用法及代码示例
- C++ list emplace()用法及代码示例
- C++ vector emplace()用法及代码示例
注:本文由纯净天空筛选整理自AyushSaxena大神的英文原创作品 stack emplace() in C++ STL。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。