【STL学习】容器篇-适配器容器
来源:互联网 发布:南京java工资一般多少 编辑:程序博客网 时间:2024/05/18 19:36
STL中的适配器容器共有三种:
queue //队列
stack //栈
priority_queue //优先级队列
适配器容器的特点:没有迭代器,只有固定的出入口。不可插入元素。
queue:
特点:先进先出(吃多了吐);
容器方式
push() 往队列中添加元素(加入队列)
pop() 弹出队列
实例代码:
queue<int> quTest; quTest.push(10); quTest.push(12); quTest.push(80); quTest.push(15); //加入队列 while (!quTest.empty()) { cout <<"front: "<< quTest.front() << " "; //访问第一个元素 cout << "back: " << quTest.back() << endl; //back访问队列尾的元素 quTest.pop(); //这里要注意,一定要弹出,front只是访问元素,不会弹出。 } cout << endl;
代码运行结果:
stack:
特点:先进后出(栈容器类似于一个桶,先装入的元素在桶低,被后面装入得元素压在下面,所以后出,后入栈的元素在栈顶,所以先出。)
代码示例:
stack<string> skTest; skTest.push("我先入栈"); skTest.push("我第二个入栈"); skTest.push("我第三个入栈"); skTest.push("我最后入栈"); int iNum = 1; while (!skTest.empty()) { cout << "我是第" << iNum++<<"个被输出:" << skTest.top().c_str() << " " << endl; //stack访问元素的方法为top,和queue不同 skTest.pop(); //适配器容器特点,一定要记pop() }
代码运行结果:
priority_queue:
优先级容器:
特点:队列有优先级的划分,(默认调用模板类仿函数less,会调用队列存储对象的 <(小于) 运算符)。
优先级的自定义:
可以通过自定义仿函数,重载<运算符,和自定义函数,以及λ函数。
测试代码:
priority_queue<int> pquTest; pquTest.push(1); pquTest.push(5); pquTest.push(10); pquTest.push(8); while (!pquTest.empty()) { cout << pquTest.top() << " "; pquTest.pop(); } cout << endl;
输出结果:
可以看到,push进去的值顺序为1,5,10,8; 根据输出结果可以看出,数字大的优先级较高(less(left, right) left
//自定义的仿函数模板 ,与默认的less相反template<typename T>class MyRule{public: bool operator()(const T& _left, const T&_right){ return _left > _right; }};void Test(){ priority_queue<int, vector<int>,MyRule<int>> pquMyRule; //自定义的优先级规则,第二个模板参数为底层容器 pquMyRule.push(1); pquMyRule.push(5); pquMyRule.push(10); pquMyRule.push(8); //同样的输入顺序 while (!pquMyRule.empty()) { cout << pquMyRule.top() << " "; pquMyRule.pop(); } cout << endl;}
代码运行结果:
第一行为默认优先级结果,第二行输出为自定义优先级结果。
适配器容器比较简单,但是应用并不少,优先级队列经常用于做消息队列。栈用于表达式求值等,
0 0
- 【STL学习】容器篇-适配器容器
- 【STL容器学习】-容器适配器
- STL容器适配器
- STL容器适配器:stack
- STL容器适配器:queue
- STL容器适配器:priority_queue
- C++ STL 容器适配器
- STL 容器适配器
- C++ STL 容器适配器
- C++ STL 容器适配器
- STL容器适配器
- STL 之容器适配器
- STL容器适配器
- STL容器适配器
- STL之容器适配器
- 【STL学习】容器篇-线性容器
- 【STL学习】容器篇-关联容器
- STL容器适配器接口小结
- 层次遍历
- 项目整体回顾
- HCE基础知识
- 网站开发进阶(十三)window.onload用法详解
- [黑马IOS自学第一篇]IOS界面编程,IOS开发体验,控件初步认识
- 【STL学习】容器篇-适配器容器
- 相机标定(一)之参考坐标系以及坐标变换
- BMP格式介绍
- 计算几何(一)
- 标准库function类型的小例子
- List常用子类区别
- Spring Security 项目
- 网站开发进阶(十四)JS实现二维码生成
- 信息检索(IR)的评价指标介绍-准确率、召回率、F1、mAP、ROC、AUC