algorithm のコールバック関数で iterator を受け取りたかった
for_each や find_if 等を使う時に、値ではなくて iterator として関数で受け取りたい場合があったのでちょっと調べてみました。
要は Boost.Range にある indirected の逆。
Boost.Range には見当たらなかったんですが PStade.Oven の
[ソース]
#include <pstade/oven/outdirected.hpp> #include <boost/range/algorithm/for_each.hpp> #include <iostream> int main(){ using boost::lambda::_1; using pstade::oven::outdirected; std::vector<int> v = {1, 2, 3, 4, 5}; boost::for_each(v | outdirected, [](std::vector<int>::iterator it){ std::cout << *it << std::endl; }); return 0; }
[出力]
1 2 3 4 5
答えを見つけるまでにだいぶ時間をかけてしまった…。