关于在标准库算法中使用函数对象的一点认识
来源:互联网 发布:域名第二年多少钱 编辑:程序博客网 时间:2024/06/14 17:26
在程序的设计中,标准库算法例如std::for_each(InputIterator _First, InputIterator _Last, Function _Func ),std::find_if(InputIterator _First, InputIterator _Last, Predicate _Pred)等等,都非常有用。特别是_Func ,_Pred等操作,允许我们定制针对迭代器所指向的元素的操作。
当_Func,_Pred需要带有一个或多个参数时,stl提供了bind、bind1st等函数来绑定参数。
目前来说,我对这个函数的使用还不多,不大熟悉,接下来会多用用。那么,现在我所使用的方式就是,直接使用带参数的函数对象,就像:Function fn(parameter1,parameter2...);Function 是定义好的类,重载了operator()操作符。这种方式的一个缺点是,如果出现要调用迭代区间中对象的成员函数的情况,且这种很多,则需要大量定义函数对象对应的类。这样,就不如使用bind等方便。
在使用std::for_each(InputIterator _First, InputIterator _Last, Function _Func )时,我还发现,_Func 是通过by_value的方式传递到算法中的,所以如果稍后还要需要利用_Func中某个成员变量的结果,这种方法是不行的,除非这个成员变量是个指针,但这样可能会带来一些麻烦,例如,在析构函数中delete是不大可能了,需要自己动手delete掉该变量。
当_Func,_Pred需要带有一个或多个参数时,stl提供了bind、bind1st等函数来绑定参数。
目前来说,我对这个函数的使用还不多,不大熟悉,接下来会多用用。那么,现在我所使用的方式就是,直接使用带参数的函数对象,就像:Function fn(parameter1,parameter2...);Function 是定义好的类,重载了operator()操作符。这种方式的一个缺点是,如果出现要调用迭代区间中对象的成员函数的情况,且这种很多,则需要大量定义函数对象对应的类。这样,就不如使用bind等方便。
在使用std::for_each(InputIterator _First, InputIterator _Last, Function _Func )时,我还发现,_Func 是通过by_value的方式传递到算法中的,所以如果稍后还要需要利用_Func中某个成员变量的结果,这种方法是不行的,除非这个成员变量是个指针,但这样可能会带来一些麻烦,例如,在析构函数中delete是不大可能了,需要自己动手delete掉该变量。
0 0
- 关于在标准库算法中使用函数对象的一点认识
- 关于在SetWindowLong函数中使用cbWndExtra的一点总结
- 关于C++中在函数中按值返回、临时对象、拷贝构造函数的一点理解
- 对于gradle在android studio中使用的一点认识
- 对C++中虚函数、纯虚函数在多态中作用的一点认识
- 标准库定义的函数对象--接“将函数对象用于标准库算法”
- 关于函数调用和尾递归的一点认识
- 关于函数传参,全局变量,局部变量的一点认识
- C语言学习过程中对于strcat函数使用的一点认识
- 关于Session的一点认识
- 关于AIR的一点认识
- 关于炒股的一点认识
- 关于框架的一点认识
- 关于学习的一点认识
- 关于HandlerThread的一点认识
- 关于堆栈的一点认识
- 关于云的一点认识。
- 关于js中call/apply的一点认识
- 人生路上必定会遇到的思考
- Java ThreadPoolExecutor并发线程池Index
- 信息系统的概念
- 重载和重写的总结
- Android入门之WmS中处理消息的时机
- 关于在标准库算法中使用函数对象的一点认识
- Android判断软键盘的状态和隐藏软键盘
- dwr与jquery~~~囧,select的取值
- hibernate的QBE和QBC
- Spring注解标签详解@Autowired @Qualifier等
- html文件选择器,选择类型
- WPF中datagrid分页
- 图形化界面 远程 linux
- maven scope含义的说明