stack
stack是一种先进后出的数据结构。它还有一个出口。
以某种既有容器作为底部结构,将其接口改变,使之符合“先进后出”的特性,形成一个stack,是很容易的。
deque是双向开口的数据结构,以deque为底部结构并封闭其头端开口,便可形成stack。
stack没有迭代器。只有stack顶端的元素,才有机会被外界取用。stack不提供走访功能,也不提供迭代器。
SGI STL以deque作为缺省情况下的stack底部结构。
list作为stack的底层容器亦可。
#include<iostream>
#include<stack>
#include<list>
using namespace std;
int main(int argc, char* argv[]) {
stack<int> s1; //默认底层结构是deque,同stack<int, deque<int>> s2;
s1.push(1);
cout << s1.top() << endl;
s1.pop();
stack<int, list<int>> s2; //以list作为底层结构
s2.push(1);
s2.push(2);
s2.push(3);
while (s2.size() != 0) {
cout << s2.top() << endl; //3,2,1
s2.pop();
}
getchar();
return 0;
}
queue
queue是一种先进先出的数据结构。它有两个出口。
以某种既有容器作为底部结构,将其接口改变,使之符合“先进先出”的特性,形成一个queue,是很容易的。
deque是双向开口的数据结构,以deque为底部结构便可形成queue。
queue没有迭代器。只有queue顶端的元素,才有机会被外界取用。queue不提供遍历功能,也不提供迭代器。
SGI STL以deque作为缺省情况下的queue底部结构。
list作为queue的底层容器亦可。
#include<iostream>
#include<queue>
#include<list>
using namespace std;
int main(int argc, char* argv[]) {
queue<int> s1; //默认底层结构是deque,同queue<int, deque<int>> s2;
s1.push(1);
cout << s1.front() << endl;
s1.pop();
queue<int, list<int>> s2; //以list作为底层结构
s2.push(1);
s2.push(2);
s2.push(3);
while (s2.size() != 0) {
cout << s2.front() << endl; //1,2,3
s2.pop();
}
getchar();
return 0;
}
}