freeCodeCamp/guide/chinese/cplusplus/stack/index.md

3.7 KiB
Raw Blame History

title localeTitle
stack

堆栈

stack是C ++中最常用的容器之一。容器是一种存储对象集合的数据结构,有些是有序的,有些则不是。所有容器都有一组不同的功能,允许您访问该集合中的对象。

std::stack是C ++标准库的一部分(因此前缀为std:: 允许您以后进先出LIFO顺序存储数据。注意 堆栈中的所有对象必须具有相同的数据类型

存储在堆栈中的数据类型位于stack关键字旁边的尖括号内。例如如果要存储整数集合则堆栈将为std::stack<int> stack_name

堆栈LIFO说明

stack允许我们按特定顺序推送和弹出。 推送意味着将对象插入堆栈顶部。 Pop意味着从堆栈顶部拉出最后插入的对象。因此,当您按下它时,它位于顶部,当您弹出时,您将提取最后插入的元素。

alt text

堆栈操作

堆栈容器支持以下操作:

  • 流行的
  • 尺寸
  • 背部

允许您在当前顶部元素上方的堆栈顶部插入新元素。

//Push operation in Stack 
 #include <iostream>       // std::cout 
 #include <stack>          // std::stack 
 
 int main () 
 { 
  std::stack<int> s; 
 
  s.push(1);    //Pushing 1 at top of the stack 
  s.push(2);    //Pushing 2 at top of the stack 
 
  return 0; 
 } 

最佳

允许您访问顶部元素而无需从堆栈中删除它。

//Top operation in Stack 
 #include <iostream>       // std::cout 
 #include <stack>          // std::stack 
 
 int main () 
 { 
  std::stack<int> s; 
 
  s.push(1);    //Pushing 1 at top of the stack 
  s.push(2);    //Pushing 2 at top of the stack 
 
  std::cout<<s.top()<<'\n';     //Accessing the top of the stack 
  std::cout<<s.top()<<'\n';     //Accessing the top of the stack 
 
  return 0; 
 } 
Output: 
 2 
 2 

流行的

移除堆栈顶部的元素,有效地将堆栈的大小减少一个。

//Pop operation in Stack 
 #include <iostream>       // std::cout 
 #include <stack>          // std::stack 
 
 int main () 
 { 
  std::stack<int> s; 
 
  s.push(1);    //Pushing 1 at top of the stack 
  s.push(2);    //Pushing 2 at top of the stack 
 
  std::cout<<s.top()<<'\n';   //Accessing the top of the stack 
  s.pop();                    //Removing element from the top of stack 
  std::cout<<s.top()<<'\n';   //Accessing the top of the stack 
 
 
  return 0; 
 } 
Output: 
 2 
 1 

尺寸

返回stack的元素数。

//Size operation in Stack 
 #include <iostream>       // std::cout 
 #include <stack>          // std::stack 
 
 int main () 
 { 
  std::stack<int> s; 
 
  s.push(1);    //Pushing 1 at top of the stack 
  s.push(2);    //Pushing 2 at top of the stack 
 
  std::cout<<s.size()<<'\n';  //Showing the size of the stack 
  s.pop();                    //Removing element from the top of stack 
  std::cout<<s.size()<<'\n';  //Showing the size of the stack 
  s.pop();                    //Removing element from the top of stack 
  std::cout<<s.size()<<'\n';  //Showing the size of the stack 
 
  return 0; 
 } 
Output: 
 2 
 1 
 0 

返回stack是否为空,即堆栈大小是否为零。 它返回true 如果堆栈的大小0否则返回false

//Empty operation in Stack 
 #include <iostream>       // std::cout 
 #include <stack>          // std::stack 
 
 int main () 
 { 
  std::stack<int> s; 
 
  s.push(1); 
  s.push(2); 
 
  while(s.empty() != false){ 
      std::cout<<s.top()<<'\n'; 
      s.pop(); 
  } 
 
  std::cout<<"Out of loop"<<'\n'; 
  return 0; 
 } 
Output: 
 2 
 1 
 Out of loop