for_each_with_indexを調べてみた
std::for_each に ループカウンターを付ける方法を調べて
何種類の実装方法があったが、自分にとって難しかったので、
自分なりにやってみました
#include <iostream> #include <string> #include <vector> // ループカウンター付きfor_each template<class InputIterator, class Function> Function for_each_with_index(InputIterator first,InputIterator last,Function fn) { int index=0; while (first != last) { fn(*first, index); ++index; ++first; } return std::move(fn); // C++11前、return fn; } int main(void) { std::vector<std::string> foo; foo.push_back("東京"); foo.push_back("大阪"); foo.push_back("新潟"); for_each_with_index(std::begin(foo),std::end(foo),[](std::string& val,int index) { std::cout << index << "," << val << std::endl; }); return 0; }
0,東京 1,大阪 2,新潟
やはりFunctionの引数が増えたらまずいのかなぁ?
ぜひアドバイスください・・