ので作ってみた。車輪の再発明万歳。
enumerate.hpp
template<typename T1>
class enumerate : public std::unary_function<T1, void>{
typedef unsigned long ul;
public:
enumerate(std::function<void(T1, ul)> f) : index(0), func(f) {};
enumerate(ul i, std::function<void(T1, ul)> f) : index(i), func(f) {};
void operator()(T1 t1){
func(t1, index);
++index;
}
private:
ul index;
std::function<void(T1, ul)> func;
};
使い方は以下の様に
sample.cpp
std::for_each(container.begin(), container.end(), enumerate<int>([&](int x, int i){
// ...
}));
もっと色々したい場合はboost使う。