下面是STL stack的一些简单使用例子,上代码:
// Stack.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<stack>
#include<list>
int _tmain(int argc, _TCHAR* argv[])
{
using namespace std;
std::cout << "stack 的一些简单使用:" << endl;
stack<int> s;
//栈插入数据
for (size_t i = 0; i <= 10; i++)
{
s.push(i);
}
std::cout << "stack size :" << s.size()<<endl;
//stack没有迭代器
std::cout << "当前栈数据为:" << endl;
while (!s.empty())
{
std::cout << s.top() << " ,";
s.pop();
}
std::cout << endl;
//第二个参数是stack的容器,默认是deque
stack<int, list<int>> s1;
for (size_t i = 10; i < 20; i++)
{
s1.push(i);
}
std::cout << "s1当前栈数据为:11,12,13,14,15,16,17,18,19" << endl;
std::cout << endl;
std::cout << "s1 size:" << s1.size() << endl;
stack<int, list<int>>s2;
for (size_t i = 20; i < 30; i++)
{
s2.push(i);
}
std::cout << "s2当前栈数据为:20,21,22,23,24,25,26,27,28,29" << endl;
/*while (!s2.empty())
{
std::cout << s2.top() << " ,";
s2.pop();
}*/
std::cout << endl;
std::cout << "s2 size:" << s1.size() << endl;
std::cout << "s1,s2交换数据后:" << endl;
s1.swap(s2);//栈只有容器相同的时候才能使用swap函数,如果这里上s1.swap(s)就会报错。
std::cout << "s1当前栈数据为:" << endl;
std::cout << "s1 size:" << s1.size() << endl;
while (!s1.empty())
{
std::cout << s1.top() << " ";
s1.pop();
}
std::cout << endl;
std::cout << "s2当前栈数据为:" << endl;
std::cout << "s2 size:" << s2.size() << endl;
while (!s2.empty())
{
std::cout << s2.top() << " ";
s2.pop();
}
//查询数据,这个?我准备用find,可是find要求是迭代器,stack没迭代器?不是说find在stl里
//是通用函数么,是我遗忘了?虽然说在栈中查找不是很科学。
return 0;
}
输出: