■
Boost.Range には std::for_each をラップした boost::for_each が
どうやら range を2つ受け取れるみたいです。
[ソース]
#include <boost/range/algorithm_ext/for_each.hpp> #include <boost/range/algorithm/for_each.hpp> #include <boost/range/irange.hpp> #include <vector> #include <string> #include <iostream> int main(){ std::vector<std::string> names{ "mami", "mado", "homu", "saya", "an", }; // <boost/range/algorithm/for_each.hpp> boost::for_each(names, [](std::string const& name){ std::cout << name << std::endl; }); // <boost/range/algorithm_ext/for_each.hpp> // range を2つ渡して評価するので、インデックスを付属させたり出来る boost::for_each( boost::irange(0u, names.size()), names, [](int index, std::string const& name){ std::cout << index << ":" << name << std::endl; } ); return 0; }
[出力]
mami mado homu saya an 0:mami 1:mado 2:homu 3:saya 4:an
上記のコードみたいにインデックスを付属させたり出来るので思ったよりも使い勝手はよさそうですね。
[boost]
- ver 1.52.0