stl 的find_if算法用来查找容器内的符合条件的元素
来源:互联网 发布:淘宝发布宝贝多种口味 编辑:程序博客网 时间:2024/04/28 14:53
stl 的find_if算法用来查找容器内的符合条件的元素
例子如下:
1. 第一种方式 :在仿函数的构造函数中保存要比较的值。
struct STableInfor { uint16 m_iTableId;}
先写仿函数:
class TableCompareFuctor{ public: TableCompareFuctor(const STableInfor tableinfo) { m_tableInfo = tableinfo ; } ~ TableCompareFuctor() { } bool operator() (const STableInfor value) { if (value.m_iTableId == m_tableInfo.m_iTableId) { return true; } else { return false; } } private: STableInfor m_tableInfo;};
最后是调用find_if算法:
先包含头文件:
#import "algorithm"using namespace std;
std::list<STableInfor> tableInforList;std::list<STableInfor>::iterator iter_begin = tableInforList.begin(); std::list<STableInfor>::iterator iter_end = tableInforList.end(); TableCompareFuctor comparefuctor(tableInfo.m_TableInfor); std::list<STableInfor>::iterator iter_find = find_if(iter_begin, iter_end, comparefuctor); if (iter_find != iter_end) { tableInforList.erase(iter_find); }上面的例子就是先找到符合条件的元素,然后从容器中删除。
2. 第二种方式 :使用
这个例子也是先找到第一个符合条件的元素,然后再将其删除出容器。
binary_function 和
bind2nd
如果要对自己的仿函数使用blind2nd等适配器,必须让自己的仿函数从binary_function继承。
bind2nd表示绑定第2个参数,也可以用bind1st来绑定第一个参数。
代码示例如下:
struct TableCompareFuctorWithAdapter : public std::binary_function<STableInfor,STableInfor,bool>{public: TableCompareFuctorWithAdapter(){} ~TableCompareFuctorWithAdapter(){} bool operator() (const STableInfor value, const STableInfor fixedValue)const { if (value.m_sTableId == fixedValue.m_sTableId) { return true; } else { return false; } }};
最后是调用find_if算法:
先包含头文件:
#import "algorithm"using namespace std;
std::vector<STableInfor>::iterator iter_begin = tableInforList.begin(); std::vector<STableInfor>::iterator iter_end = tableInforList.end(); TableCompareFuctorWithAdapter comparefuctor; std::vector<STableInfor>::iterator iter_find = find_if( iter_begin, iter_end, std::bind2nd(comparefuctor, tableInfo.m_TableInfor) );
if (iter_find != iter_end) { tableInforList.erase(iter_find); }
这个例子也是先找到第一个符合条件的元素,然后再将其删除出容器。
- stl 的find_if算法用来查找容器内的符合条件的元素
- 用find_if查找容器中符合条件的子集
- stl find_if在map中查找元素的应用
- STL容器元素应满足的条件
- STL vector用法以及如何删除符合条件的元素
- STL容器内元素条件
- STL的find_if函数
- STL的find_if函数
- STL的find_if函数
- 使用find_if的自定义条件查找vector或map
- C++ Vector 删除符合条件的元素
- grep-查找符合条件的字符串
- STL的find_if的使用
- 用find_if查找vector内对象的成员
- 用find_if查找vector内对象的成员
- 用find_if查找vector内对象的成员
- stl容器内指针元素的使用与释放
- C++ STL容器内元素的类型约束
- BAK
- TempData、ViewData和ViewBag异同
- axis支持三种web service的部署和开发
- Android数据存储机制
- 日時の書式を変換するクラス
- stl 的find_if算法用来查找容器内的符合条件的元素
- suse10 下给64位oracle打补丁
- 4字节的时间戳,3 字节的机器号,2 字节的进程 id 以及 3 字节的自增计数组成
- vb.net 或 Sqlserver 加减月份的方法
- PHP 从数据库Mysql中读取数据生成excel(解决乱码问题,解决中文变问号问题)
- 每天记录点学会的知识~1234全排列模版
- mongodb的记录
- 文字列を判断するクラス
- Android: R cannot be resolved to a variable