2012-05-31 STL algorithm for_each は要素を変更していい メモ C++ 参考文献 https://sites.google.com/site/cpprefjp/reference/algorithm/for_each c++ - Why is std::for_each a non-modifying sequence operation? - Stack Overflow 要するに for_each は、 "non-modifying sequence operation" (シーケンスを変更しない操作) となっているので、与える関数は一見要素を変更してはいけないように思える。しかし、 C++03 ではできない旨の記述はなく、また C++11 では明確にできるというノートがついた。なので、 f(T x) でも f(T& x) でも f(const T& x) でもよくて、値を変更してもよい。上記の分類の意味は、 for_each 自体はシーケンスを何もいじらない、という程度の意味らしい。