将函数对象用于标准库算法

 1 #include<iostream>
 2 #include<vector>
 3
 4 bool GT6(const int &s){
 5     return s>=6;
 6     }
 7 int main(){
 8     int a[]={0,1,2,3,4,5,6,7,8,9};
 9     std::vector<int>vec(a,a+10);
10     std::cout<<count_if(vec.begin(),vec.end(),GT6)<<std::endl;
11    return 0;
12 }
#include<iostream>
#include<vector>

class GT_cls{
public:
    GT_cls(int val=0):i(val){}
    bool operator()(const int &s){
        return s>=i;
    }
private:
    int i;
};

int main(){
    int a[]={0,1,2,3,4,5,6,7,8,9};
    std::vector<int>vec(a,a+10);
    std::cout<<count_if(vec.begin(),vec.end(),GT_cls(6) )<<std::endl;
   return 0;
}
时间: 2024-10-04 00:08:15

将函数对象用于标准库算法的相关文章

利用标准库算法求解排列组合

以前求序列的排列时,最常用的方法就是递归回溯,现在发现其实像这样有特定算法的重复性工作是可以在STL标准库中找到答案的. 在STL的变序性算法中,有两个用于排列元素的算法分别如下: bool next_permutation(Iterator beg,Iterator end) bool prev_permutation(Iterator beg,Iterator end) 这两个算法的功能也很简单,next_permutation()会改变区间(beg,end)内的元素次序,使它们符合"下一个

STL标准库-算法-常用算法

摘要: 摘要: 摘要: 技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 介绍11种STL标准库的算法,从这11种算法中总结一下算法的基本使用 1.accumulate() 累加 2.for_each() for一段区间 做你指定的行为 3.replace(), replace_if(), replace_copy() 替换函数 4.count(), count_if() 计数 5.find() 查找 6.sort() 排序 7.binary_search()查看元素是否在

4.Python3标准库--算法

(一)functools:管理函数的工具 import functools ''' functools模块提供了一些工具来管理或扩展和其他callable对象,从而不必完全重写 ''' 1.修饰符 from functools import partial ''' functools模块提供的主要工具就是partial类,可以用来包装一个有默认参数的callable对象. 得到的对象本身就是callable,可以把它看作是原来的参数. ''' # 举个栗子 def foo(name, age,

标准库算法实现一

1.max(x,y) 2.find(b,e,t) 3.find_if(b,e,p) 4.search(b,e,b2,e2) 5.remove(b,e,t) 6.copy(b,e,d) 7.remove_copy(b,e,d,t) 8.remove_copy_if(b,e,d,p) 9.replace(b,e,x,y) 10.swap(x,y) 11.reverse(b,e) 12. binary_search(b,e,x) 13.split(s) 14.equal(b,e,b2) 15.tran

14.8.2. 标准库定义的函数对象

#include<iostream> #include<string> #include<vector> using namespace std; /* 这个类很简单,它定义了一个操作:函数调用操作符,该操作符有一个形参 并返回形参的绝对值. 函数调用操作符必须声明为成员函数.一个类可以定义函数调 用操作符的多个版本,由形参的数目或类型加以区别 */ struct absInt { int operator()(int val) { return val<0 ?

C++ Primer 学习笔记_62_重载操作符与转换 --调用操作符和函数对象

重载操作符与转换 --调用操作符和函数对象 引言: 能够为类类型的对象重载函数调用操作符:一般为表示操作的类重载调用操作符! struct absInt { int operator() (int val) { return val > 0 ? val : -val; } }; 通过为类类型的对象提供一个实參表而使用调用操作符,所用的方式看起来系那个一个函数调用: absInt absObj; int i = -1; cout << absObj(i) << endl; 虽然

C++中如何定义函数对象

尽管函数指针被广泛用于实现函数回调,但C++还提供了一个重要的实现回调函数的方法,那就是函数对象.函数对象(也称“算符”)是重载了“()”操作符的普通类对象.因此从语法上讲,函数对象与普通的函数行为类似. 用函数对象代替函数指针有几个优点,首先,因为对象可以在内部修改而不用改动外部接口,因此设计更灵活,更富有弹性.函数对象也具备有存储先前调用结果的数据成员.在使用普通函数时需要将先前调用的结果存储在全程或者本地静态变量中,但是全程或者本地静态变量有某些我们不愿意看到的缺陷.其次,在函数对象中编译

STL 算法中函数对象和谓词

STL 算法中函数对象和谓词 函数对象和谓词定义 函数对象: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象.一个类对象,表现出一个函数的特征,就是通过"对象名+(参数列表)"的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待.          这是通过重载类的operator()来实现的.          "在标准库中,函数对象被广泛地使用以获得弹性",标准库中的很多算法都可以使用函数

《C++ Primer》第II部分:C++标准库

<C++ Primer>第II部分:C++标准库 前言 把<C++ Primer>读薄系列笔记.本篇为第II部分C++标准库,包含全书第8-12章重难点: IO库 顺序容器 范型算法 关联容器 动态内存 修订版课后题解见GitHub仓库cpp-primer-workbook. IO库 IO类继承机制:ifstream和istringstream继承自istream,ofstream和ostringstream都继承自ostream 宽字符IO类:在函数和类型前加前缀w,如wcin.