STL 之迭代函数解析
来源:互联网 发布:pickit3.5软件下载 编辑:程序博客网 时间:2024/04/28 06:48
STL包含了用于迭代容器中元素的方法-迭代方法,包括for_each, transform, copy, find, remove
1、用法:
2、细节部分
for_each如何实现的呢, 下面是STL的源码(去除了部分诊断代码)
可以看到,通过迭代容器中的元素,将每个元素作为参数,调用第三个参数(函数指针,注意这里的函数是全局函数)
3、对类成员函数的调用,STL函数适配器
如for_each代码所示,只能调用全局函数(ordinary functions)或者函数对象(function objects,请参考STL关于函数对象的描述),那么要对容器中的对象,调用其成员函数,要怎么办呢? 这里STL提供了一种设计方法:适配器(适配器,是一种将两个不能直接交流的物件进行中介的一种中间人,这也是设计里面的一种模式)。
STL提供的适配器包括 ptr_fun, mem_fun, mem_fun_ref。
a) ptr_fun是一个模板函数,返回一个函数对象,该适配器可适配普通函数(ordinary function),请看下面STL关于ptr_fun相关的代码:
现在在看一下pointer_to_unary_function的代码,就知道整个调用过程是怎样进行的了:
注意下面的代码调用效果一样:
ptr_fun为需要对象函数的方法提供适配,例如如下代码:
b) mem_fun, 该适配器提供对对象成员函数的调用, 参考一下STL的实现代码:
c) mem_fun_ref, 含义和mem_fun相同, 区别在于mem_fun通过对象指针调用,mem_fun_ref通过对象引用调用, 参考以下STL实现代码:
从mem_fun, mem_fun_ref可以学习到如何在对象外部,通过对象指针和对象引用,调用指定类的成员方法。
最后注意:mem_fun用于指针的容器(支持多态的),mem_fun_ref用于对象的容器。
- STL 之迭代函数解析
- JSON迭代解析
- 研究STL之vector的push_back函数解析
- 函数的迭代
- 函数递归 迭代
- 函数的迭代
- STL容器迭代删除元素
- XML迭代解析算法
- STL之函数对象
- STL之find_if函数
- STL之函数对象
- STL之函数对象
- STL之仿函数
- STL之函数对象
- STL之查找函数
- STL之resize()函数
- STL之仿函数
- STL之equal_range() 函数
- 利用call传递静态参数
- VS2008+SQL2005 ASP.NET2.0数据库连接总结 (vs2005也可)----转载+说明
- Action中完成下載文件代碼
- 下载
- ADOTable中Filter的用法
- STL 之迭代函数解析
- Web开发调试工具
- html之map标签
- nano编辑器的使用
- c++ 字符串截取
- Window下TOMCA优化与监控
- jfreechart配置与应用
- Struts 1.3.8 Action實現類中消息的輸出及JSP頁面中消息標簽的使用總結
- oracle 临时表的使用 [转]