当前位置:  开发笔记 > 编程语言 > 正文

用std :: for_each改变对象是否可以?

如何解决《用std::for_each改变对象是否可以?》经验,为你挑选了1个好方法。

for_each接受InputIterators:

//from c++ standard
template 
   Function for_each (InputIterator first, InputIterator last, Function f);

是否可以更改Function f中的对象,如下所示:

struct AddOne
{
    void operator()(int & x){x = x + 1;}
};

std::vector vec(10);
std::for_each(vec.begin(),vec.end(),AddOne());

此代码适用于VC++ 2008以及GCC,但它是否也是可移植(合法)代码?
(InputIterators仅保证可用作rvalue,在这种情况下,它们在AddOne的operator()中用作左值)



1> dirkgently..:

阅读这篇文章.

要迂腐:for_each是一种非修改序列操作.目的不是修改序列.然而,这好当使用修改输入序列for_each.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有