1、容器适配器
#include <iostream>
#include <stack>
#include <list>
#include <queue>
#include <functional>
#include <iterator>using namespace std;int main() {// 栈(先进后出filo)stack<int, list<int>> s;for(int i = 0; i < 5; ++i){s.push(i);}// 不能用下面的这种循环,因为pop后,size会发生变化,输出4 3 2
// for(size_t i = 0; i < s.size(); ++i)
// {
// cout << s.top() << " ";
// s.pop();
// }while (!s.empty()){cout << s.top() << " ";s.pop();}cout << endl;// 队列(先进先出)queue<int, list<int>> q; // 注意这边的list不能用vector,因为源码中vec没有pop_front接口,所以要注意接口的匹配for (int i = 0; i < 5; ++i){q.push(i);}while (!q.empty()){cout << q.front() << " ";q.pop();}cout << endl;// 优先级队列(不一定先进先出)int a[] = {5, 1, 3, 2, 4};priority_queue<int> pq(a, a + 5); // 这里面会调用make_heapwhile (!pq.empty()){cout << pq.top() << " "; // 弹出是按照值的大小,值越大,优先级越高pq.pop();}cout << endl;// 堆(二叉树,大堆或者小堆)make_heap(a, a + 5);copy(a, a + 5, ostream_iterator<int>(cout, " "));cout << endl;sort(a, a + 5, less<int>());// 默认是greater大堆copy(a, a + 5, ostream_iterator<int>(cout, " "));cout << endl;return 0;
}//输出
4 3 2 1 0
0 1 2 3 4
5 4 3 2 1
5 4 3 2 1
1 2 3 4 5