在STL优先队列中查找
2015-11-06 21:28
246 查看
C++ STL库中提供的优先队列并没有提供find方法,因为没有实现iterator和begin()和end()所以也不能用std::find()直接进行查找。但是这并不代表没有办法在优先队列中查找元素。
查阅头文件queue,会发现有一个保护成员c, 因此我们可以简单地利用这个容器进行实现begin()和end(),然后进行查找。
测试一下代码
这样就实现priority_queue中的查找了。
查阅头文件queue,会发现有一个保护成员c, 因此我们可以简单地利用这个容器进行实现begin()和end(),然后进行查找。
template<class T, class Container = vector<T>, class cmp=greater<T>> class pqueue : public priority_queue<T, Container, cmp> { public: auto begin() { return c.begin(); } auto end() { return c.end(); } auto find(T val) { return std::find(begin(), end(), val); } };
测试一下代码
int main() { pqueue<int, vector<int>> Q; Q.push(1); Q.push(2); Q.push(3); Q.push(4); Q.push(5); auto it = Q.find(5); if (it != Q.end()) cout << "found: " << *it; else cout << "Not found"; }
这样就实现priority_queue中的查找了。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性
- C++ Custom Control控件向父窗体发送对应的消息