我刚刚阅读了 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
,但这不是重点。