for_each接受InputIterators:
//from c++ standard templateFunction for_each (InputIterator first, InputIterator last, Function f);
是否可以更改Function f中的对象,如下所示:
struct AddOne { void operator()(int & x){x = x + 1;} }; std::vectorvec(10); std::for_each(vec.begin(),vec.end(),AddOne());
此代码适用于VC++ 2008以及GCC,但它是否也是可移植(合法)代码?
(InputIterators仅保证可用作rvalue,在这种情况下,它们在AddOne的operator()中用作左值)
阅读这篇文章.
要迂腐:for_each
是一种非修改序列操作.目的不是修改序列.然而,这是好当使用修改输入序列for_each
.