STL Containers & Iterators part1(Chapter 4 of Thinking in C++ Vol 2)

本文介绍了一个使用模板函数和成员指针的应用实例,展示了如何遍历容器并调用容器中元素的成员函数。通过定义一个通用的apply函数,可以实现对不同类型的容器和成员函数的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ExpandedBlockStart.gifcode
 1 #include <iostream>
 2 #include <vector>
 3 #include <iterator>
 4 using namespace std;
 5 
 6 template<class Cont, class PtrMemFun>
 7 void apply(Cont& c, PtrMemFun f)
 8 {
 9     typename Cont::iterator it = c.begin();
10     while(it != c.end())
11     {
12         ((*it).*f)();
13         it++;
14     }
15 }
16 
17 class Z
18 {
19     int i;
20 public:
21     Z(int ii) : i(ii) {}
22     void g() { i++; }
23     friend ostream& operator<<(ostream& os, const Z& z)
24     {
25         return os << z.i;
26     }
27 };
28 
29 int main()
30 {
31     ostream_iterator<Z> out(cout, " ");
32     vector<Z> vz;
33     for(int i=0; i<10; i++)
34     {
35         vz.push_back(Z(i));
36     }
37     copy(vz.begin(), vz.end(), out);
38     cout << endl;
39     apply(vz, &Z::g);
40     copy(vz.begin(), vz.end(), out);
41     cin.get();
42 }

 

转载于:https://www.cnblogs.com/zhtf2014/archive/2011/01/08/1930948.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值