【发布时间】:2010-10-14 08:28:37
【问题描述】:
我刚刚在 C++ 标准中读到 std::for_each 是一个非修改序列操作,还有 find、search 等等。这是否意味着应用于每个元素的函数不应该修改它们?这是为什么?可能会出什么问题?
这是一个示例代码,其中修改了序列。你能看出它有什么问题吗?
void foo(int & i)
{
i = 12;
}
int main()
{
std::vector<int> v;
v.push_back(0);
std::for_each(v.begin(), v.end(), foo);
// v now contains 12
}
我怀疑这只是一个解释问题,但我想听听您对此的看法。
PS:我知道我可以使用std::transform 代替for_each,但这不是重点。
【问题讨论】: