网管联盟-网管软件下载-搞乐乐网站全力打造网管之家

当前位置: 网管>编程开发>C++>

标准模板库STL(Standard Template Library)(40)

时间:2009-04-07 16:13来源:未知 作者:admin 点击:
先看个Group1中的一个算法对每个(for_each),有三个参数,两个输入迭代器,一个函数对象。这个操作的意思是对[first, last)的每个元素都做一个Function操作: template class InputIterator, class Function Functi
 
       先看个Group1中的一个算法“对每个(for_each)”,有三个参数,两个输入迭代器,一个函数对象。这个操作的意思是对[first, last)的每个元素都做一个Function操作:
template <class InputIterator, class Function>
Function for_each(InputIterator first, InputIterator last, Function f) {
    while (first != last) f(*first++);
    return f;
}
下面给一个使用for_each的例子:
template <class T>
class sum_up
{
public:
       void operator() (const T& value) { sum += value; }
       const T& read_sum() { return sum; }
private:
       static T sum;
};
 
int sum_up<int>::sum = 0;
 
void main()
{
       deque<int> d(3, 2); // 两个元素:3 3
       sum_up<int> s;
       for_each(d.begin(), d.end(), s);
       cout << s.read_sum();
}
输出结果:6。注意到这里用到了函数对象sum_up,它定义了operator。所以函数对象是STL中一个非常重要的概念,屡屡用到。
       Group1中还有其他的操作,如“寻找(Find)”、“邻居寻找(Adjacent find)”、“计数(Count)”、“不匹配(Mismatch)”、“相等(Equal)”、“搜索(Search)”等。(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
栏目列表
推荐内容