いまさらながら、C++のstd::vectorの使い方を調べるなど。動的配列ということは分かったし、イテレータの使い方も分かったけど、std::for_eachを使った回し方はなんかよく分からない。ここまでトリッキーなことをして、どういうご利益があるのかな?
#include <stdio.h> #include <vector> #include <algorithm> // intのベクター(動的配列) typedef std::vector<int> VECTOR; // 関数オブジェクト class PrintInt { public: // ()演算子の実装 void operator()(int num) { printf("PrintInt %d\n",num); } }; int main(void) { VECTOR v; for(int i = 0; i < 10; ++i ) { // ベクターの末尾に要素を追加する v.push_back( i * 10 ); } // ふつうに配列の添え字を回す for(int i = 0; i < v.size(); i++ ) { printf("v[%d] = %d\n", i, v[i]); } // イテレータで回す for(VECTOR::iterator it=v.begin(); it!=v.end(); it++) { printf("*it = %d, it++\n", *it); } // std::for_eachで回す ...なんだかよく分からない std::for_each(v.begin(), v.end(), PrintInt()); getchar(); return 0; }