容器适配器时基于容器实现的新容器.
容器是配置分为三种 stack头文件:#include
对应数据结构中的栈,有先进后出的特性.
来自deque,,可用顺序容器vector,list,deque.
queue头文件:#include
对应数据结构中的队列,有先进先出的特性.
来自deque,可用顺序容器list,deque.容器必须提供前插(push_front())运算
priority_queue头文件:#include
它是一个带优先级的队列,可以按照某种优先级顺序进行删除.
来自vector,可用顺序容器vector,deque,容器必须提供随机访问功能.
提供了top访问下一个元素,默认从大到小顺序进行删除.
stack允许在顶部插入删除,不能访问中间元素.
没有迭代器,遍历可以弹出访问栈顶元素(也不支持下标操作)
stack成员函数s; stack > s; //两个等价的 //要从vector衍生stack可以 stack > s;
#includequeue#include using namespace std; int main() { stack s; //判断栈是否为空 if (s.empty()) { cout << "is empty" << endl; } //栈顶插入元素 s.emplace(1); //C++11 s.push(2); //返回栈顶元素 cout << s.top() << endl; //2 //栈中的元素个数 cout << s.size() << endl; //2 //删除栈顶元素 s.pop(); cout << s.top() << endl; //1 //交换两个stack stack s2; s2.emplace(4); s2.emplace(8); s2.emplace(9); s2.emplace(2); s.swap(s2); cout << s.size() << endl; //4 cout << s2.size() << endl; //1 return 0; }
队尾插入,队首删除,同样不能访问中间元素,并且没有迭代器.
成员函数#includepriority_queue#include using namespace std; int main() { queue q; //判空 if (q.empty()) { cout << "is empty" << endl; } //队尾插入元素 q.push(1); q.emplace(2); //返回队首元素 cout << q.front() << endl; //1 //返回队尾元素 cout << q.back() << endl; //2 //返回当前元素个数 cout << q.size() << endl; //2 //删除队首元素 q.pop(); cout << q.size() << endl; //1 cout << q.front() << endl; //2 queue q2; q2.emplace(1); q2.emplace(2); q2.emplace(3); q2.emplace(4); q2.emplace(5); //交换两个容器 q.swap(q2); cout << q.size() << endl; //5 cout << q2.size() << endl; //1 return 0; }
不同于,最大元素是队首,可以排序,默认升序.
没有front和back
成员函数#include#include using namespace std; int main() { priority_queue q; //判空 if (q.empty()) { cout << "is empty" << endl; } //添加元素 q.push(4); q.emplace(2); //返回最大元素 cout << q.top() << endl; //4 //返回元素个数 cout << q.size() << endl; //2 //删除最大元素 q.pop(); cout << q.top() << endl; //2 return 0; }



