标准库算法探索(一)——一元谓词定制算法
来源:互联网 发布:亿级别数据库 编辑:程序博客网 时间:2024/05/22 04:28
- 测试引言
- 测试代码
- 测试结果
- 测试结论
测试引言
之前在使用智能指针的时候发现,指针并不能适用于标准库中那些使用默认==符号进行比较的算法,但是标准库还提供了可定制的算法(《C++ Primer》第5版 P770)
测试代码
#include <iostream>#include <vector>#include <memory>#include <algorithm>using namespace std;class Engine {public: Engine() { num = 8; } Engine(int _num) { num = _num; } ~Engine() { cout << __FUNCTION__ << endl; } int getNum() { return num; } friend bool operator == (Engine & engine1, Engine & engine2) { if(engine1.getNum() == engine2.getNum()) { return true; } return false; }private: int num;};class Car {public: Car() { } Car(Engine* _engine) { this->engine = _engine; } Car(shared_ptr<Engine> _engineSharedPtr) { this->engineSharedPtr = _engineSharedPtr; } Car(vector<Engine*> _engines) { this->engines = _engines; } Car(vector<shared_ptr<Engine>> _enginesSharedPtr) { this->enginesSharedPtr = _enginesSharedPtr; } Engine* getEngine() { return this->engine; } ~Car() { cout << __FUNCTION__ << endl; }private: Engine* engine; shared_ptr<Engine> engineSharedPtr; vector<Engine*> engines; vector<shared_ptr<Engine>> enginesSharedPtr;};int main(int argc, char const *argv[]) { cout << "Test find_if with unaryPred:" << endl; { vector<shared_ptr<Engine>> engineVector; engineVector.push_back(shared_ptr<Engine>(new Engine(1))); engineVector.push_back(shared_ptr<Engine>(new Engine(2))); engineVector.push_back(shared_ptr<Engine>(new Engine(3))); engineVector.push_back(shared_ptr<Engine>(new Engine(4))); shared_ptr<Engine> engine(new Engine(3)); auto iterator = find_if(engineVector.begin(), engineVector.end(), [engine](const shared_ptr<Engine> _engine){ if(*engine == *_engine) { cout << "true" << endl; return true; } cout << "false" << endl; return false; }); cout << (*iterator)->getNum() << endl; } return 0;}
测试结果
测试结论
可以使用定制的find_if操作来实现
CSDN 辣鸡 MD 编辑器,无序列表格式全丢
阅读全文
0 0
- 标准库算法探索(一)——一元谓词定制算法
- STL算法设计理念 - 谓词,一元谓词demo
- stl算法设计理念_一元函数对象和一元谓词
- 标准库算法实现一
- 数理逻辑:谓词逻辑(11)一元谓词逻辑
- C++标准库—STL算法
- 视频压缩知识介绍(一)——评价标准及算法原理
- 算法(一)——算法特性
- 算法—RSA算法原理(一)
- mahout探索之旅——kmeans算法(上)
- 一元多项式求和算法(单链表实现)
- 一元多项式乘法算法
- C++ 算法(<algorithm>)的谓词(predicate)详解
- C++标准库算法
- 标准C++算法库
- C++标准库算法
- 标准库算法学习
- 一元谓词案例与二元谓词案例
- 设计模式六大原则
- Error calling Python module function in MySQL Workbench
- 剑指offer——二叉树镜像、反转单词序列
- MOOC清华《程序设计基础》第1章第3题:求平方和
- shiro中自定义realm实现md5散列算法加密的模拟(二)
- 标准库算法探索(一)——一元谓词定制算法
- mybatis 批量插入数据
- Java从入门到精通Chapter7_1
- Rosalind-DNA转换为RNA
- python之numpy库[2]
- Java进阶(一)_开始读懂class文件
- 第四届“图灵杯”NEUQ-ACM程序设计竞赛(团队赛)-网络同步赛B(排序)
- OpenDDS开发手册---第二章(开始)4
- c语言入门:用qt实现简单IDE