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


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


堆棧是一種具有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


相關用法


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