![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法中函数对象和谓词
代码黑洞_
好记性不如烂笔头
展开
-
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 · 235 阅读 · 0 评论 -
STL的容器算法迭代器的设计理念
STL的容器通过类模板技术,实现数据类型和容器模型的分离。 STL的迭代器技术实现了遍历容器的统一方法;也为STL的算法提供了统一性 STL的函数对象实现了自定义数据类型的算法运算。 具体例子:transform算法的输入,通过迭代器first和last指向的元算作为输入;通过result作为输出;通过函数对象来做自定义数据类型的运算。...原创 2019-12-11 14:35:30 · 118 阅读 · 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 · 115 阅读 · 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 · 324 阅读 · 4 评论 -
一元函数对象、一元谓词、二元函数对象、二元谓词
一元函数对象:函数参数1个二元函数对象:函数参数2个一元谓词 函数参数1个,函数返回值是bool类型,可以作为一个判断式,谓词可以是一个仿函数,也可以是一个回调函数。二元谓词 函数参数2个,函数返回值是bool类型之所以给返回布尔类型的函数对象专门命名,是因为谓词是用来为算法判断服务的。一元谓词template <typename T>class IsDiv...原创 2019-12-03 10:55:02 · 940 阅读 · 0 评论 -
函数对象和普通函数
函数对象:重载函数调用操作符operator()的类,其对象常称为函数对象。当用该对象调用此操作符时,其表现形式如同普通函数调用一般,因此取名叫函数对象。(一元函数对象)template <typename T>class PrintElement{public: void operator()(T &t) { cout <&l...原创 2019-12-02 16:25:37 · 527 阅读 · 0 评论