📜  在C++ STL中堆叠emplace()

📅  最后修改于: 2021-05-30 15:44:20             🧑  作者: Mango

堆栈是一种具有LIFO(后进先出)工作方式的容器适配器,其中在一端添加了一个新元素,而(顶部)仅从该端删除了一个元素。

stack :: emplace()

此函数用于将新元素插入堆栈容器,该新元素将添加到堆栈顶部。
句法 :

stackname.emplace(value)
Parameters :
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 
#include 
using namespace std;
  
int main() {
  stack 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 
#include 
using namespace std;
  
int main() {
  int c = 0;
  // Empty stack
  stack 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++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”