C++之栈容器

编程入门 行业动态 更新时间:2024-10-24 08:32:45

C++之栈<a href=https://www.elefans.com/category/jswz/34/1771431.html style=容器"/>

C++之栈容器

1.简介

  stack ,栈(堆栈),是一种先进后出(First In Last Out,FILO)的数据结构,先插入的数据在栈底,后放入的数据在栈顶,所有的数据只能从栈顶取出。
  在生活中先进后出的例子友很多,例如我们在桌子上摞书,先放的在最下面,后放的在最上面。在取书的时候也是先取最后放的,最才能取到第一个放的。

  栈容器中,只有栈顶数据才可以被外界访问,因此stack不存在遍历。

2.栈容器使用示例

  • stack(栈)容器特性
  • 先进后出(后进先出) --类似与往袋子中装东西,先放进去的在最下面,最后放进行的可以先拿出来;第一个放进去的 —>栈底最后一个放进的—>栈顶
  • stack只允许从栈顶取数据
  • stack容器无法对数据进行排序sort,但可以判断容器是否为空empty,可以计算元素的个数size;
  • 相关函数
  • stack构造函数:
      默认构造:stack< T > stk;
      拷贝构造:stack(const stack &p);

  • stack赋值
      运算符号重载:operator=()

  • stack入栈与出栈
      入栈(在容器尾部插入元素):emplace()
      入栈(在容器尾部插入元素): push()
      出栈:pop()
      查看栈顶元素:top()
      判断容器是否为空:empty()
      获取元素个数:size()
      交换元素:swap()

  • 使用示例
#include <iostream>
#include <stack>
using namespace std;
void test()
{//创建一个stack容器stack<int> stk;//入栈stk.push(10);stk.push(20);stk.push(30);stk.push(40);stk.emplace(100);stack<int>stk3(stk);//拷贝构造cout << "stk元素个数:" << stk.size() << endl;//查看stk元素while (!stk.empty()){cout << stk.top() << " ";//查看栈顶元素stk.pop();//出栈}cout << endl;stack<int>stk2 = stk;//赋值if (stk2.empty()){cout << "stk2为空" << endl;}//入栈stk2.push(111);stk2.push(222);stk2.swap(stk3);//查看stk2元素cout << "skt2栈内容:" << endl;while (!stk2.empty()){cout << stk2.top() << " ";//查看栈顶元素stk2.pop();//出栈}cout << endl;//查看stk3元素cout << "skt3栈内容:" << endl;while (!stk3.empty()){cout << stk3.top() << " ";//查看栈顶元素stk3.pop();//出栈}cout << endl;
}
int main()
{test();system("pause");
}

3.stack自定义类型示例

#include <iostream>
#include <stack>
using namespace std;
class Person
{friend ostream& operator<<(ostream& cout,Person p);//友元
public://构造函数Person(int age,string name):age(age),name(name){}private:int age;string name;
};
ostream& operator<<(ostream& cout,Person p)
{cout<<"姓名:"<<p.name<<"\t年龄:"<<p.age;return cout;
}void test()
{stack<Person> st1;//入栈st1.emplace(18,"小王");st1.push(Person(20,"小刘"));st1.emplace(25,"阿水");cout<<"st1成员个数:"<<st1.size()<<endl;//出栈while(!st1.empty()){cout<<"取栈顶元素:"<<st1.top()<<endl;st1.pop();//出栈}
}
int main()
{test();
}

更多推荐

C++之栈容器

本文发布于:2023-11-17 11:54:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1643702.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:容器

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!