
算法中函数对象和谓词
代码黑洞_
好记性不如烂笔头
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
for_each算法和transform算法的区别
for_each: 用指定函数依次对指定范围内所有元素进行迭代访问,可对容器的元素进行修改。 transform: 与for_each类似,遍历所有元素,可对容器的元素进行修改。 class PrintElem { public: void operator()(int &e) { m_n++; cout << e << " "; } ...原创 2019-12-12 16:32:30 · 300 阅读 · 0 评论 -
STL的容器算法迭代器的设计理念
STL的容器通过类模板技术,实现数据类型和容器模型的分离。 STL的迭代器技术实现了遍历容器的统一方法;也为STL的算法提供了统一性 STL的函数对象实现了自定义数据类型的算法运算。 具体例子:transform算法的输入,通过迭代器first和last指向的元算作为输入;通过result作为输出;通过函数对象来做自定义数据类型的运算。 ...原创 2019-12-11 14:35:30 · 183 阅读 · 0 评论 -
预定义函数对象和函数适配器
预定义函数对象 算法函数对象 加法:plus<Types> 减法:minus<Types> 乘法:multiplies<Types> 除法divides<Tpye> 求余:modulus<Tpye> 取反:negate<Type> 关系函数对象 等于equal_to<Tpye> 不等于not_equal_t...原创 2019-12-11 13:59:21 · 172 阅读 · 0 评论 -
在set集合中使用二元谓词(编译器错误 C3848)
案例:在set集合中插入小写字母,通过find去查找,而find函数区分大小写。因此需要通过仿函数来解决 struct NoDistincyion { bool operator()(const string &str1,const string &str2) { string str1_; str1_.resize(str1.size()); transfor...原创 2019-12-10 16:11:13 · 396 阅读 · 4 评论 -
一元函数对象、一元谓词、二元函数对象、二元谓词
一元函数对象:函数参数1个 二元函数对象:函数参数2个 一元谓词 函数参数1个,函数返回值是bool类型,可以作为一个判断式,谓词可以是一个仿函数,也可以是一个回调函数。 二元谓词 函数参数2个,函数返回值是bool类型 之所以给返回布尔类型的函数对象专门命名,是因为谓词是用来为算法判断服务的。 一元谓词 template <typename T> class IsDiv...原创 2019-12-03 10:55:02 · 1053 阅读 · 0 评论 -
函数对象和普通函数
函数对象:重载函数调用操作符operator()的类,其对象常称为函数对象。当用该对象调用此操作符时,其表现形式如同普通函数调用一般,因此取名叫函数对象。(一元函数对象) template <typename T> class PrintElement { public: void operator()(T &t) { cout <&l...原创 2019-12-02 16:25:37 · 609 阅读 · 0 评论