1. 程式人生 > >STL模板庫中棧和佇列常用用法總結

STL模板庫中棧和佇列常用用法總結

1、stack的基本用法  #include<stack>

(1)定義:

stack<int>S;

stack<string>S;

(2)基本操作:

S.push(x);x入棧。

S.pop();出棧(刪除棧頂元素,不返回)。

S.top();訪問棧頂元素。

S.empty();判斷棧是否為空(空時返回true,否則返回false)。

#include<iostream>
#include<stack>

using namespace std;

int main()
{
	/*
	//建立一個棧物件,類似與vector
	stack<int> S;
	//壓
	for(int i=1;i<=10;i++)
	{
		S.push(i);
		cout<<S.top()<<endl;
	}

	//棧的大小
	cout<<"size:"<<S.size()<<endl;
	//出棧
	while(!S.empty())
	{
		cout<<S.top()<<endl;
		S.pop();
	}
	*/
	//棧中的元素跟容器一樣可以是其他型別的,所以靈活使用可以達到很多功能
	//比如逆序一個英文句子
	string s;
	stack<string> ss;
	while(1)
	{
		cin>>s;
		//用end控制結尾
		if(s=="end")
			break;
		ss.push(s);
	}

	while(!ss.empty())
	{
		cout<<ss.top()<<" ";
		ss.pop();

	}
	cout<<endl;
}

棧是一種很有用的資料結構,使用得當,能完成很多複雜的演算法;

2、佇列

queue的基本用法  #include<queue>

(1)定義:

queue<int>Q;

queue<double>Q;

(2)基本操作:

Q.push(x);x入隊。

Q.pop();出隊(彈出佇列第一個元素,不返回)。

Q.front();訪問隊首元素。

Q.back();訪問隊尾元素。

Q.empty();判斷佇列是否為空(空時返回true,否則返回false)。

Q.size();返回佇列中元素的個數。

這裡就不再演示了,跟棧類似。