STL の std::fill() アルゴリズムによる多次元配列の初期化
こちら(http://mogproject.blogspot.com/2011/05/c-vector.html)同様、
マクロ+テンプレートで実現。
1: #define FILL(ptr, value) FILL_((ptr), sizeof(ptr) / sizeof(value), (value))
2: template <typename T>
3: void FILL_(void* ptr, size_t size, T value) {
4: std::fill((T*)ptr, (T*)ptr + size, value);
5: }
・使用例
1: int a[3][3];
2: char c[2][2][2];
3: FILL(a, 5);
4: FILL(c, 'X');
5:
6: for (int i=0; i<3; ++i) for (int j=0; j<3; ++j)
7: std::cout << a[i][j] << " ";
8: std::cout << std::endl; // "5 5 5 5 5 5 5 5 5 "
9: for (int i=0; i<2; ++i) for (int j=0; j<2; ++j) for(int k=0; k<2; ++k)
10: std::cout << c[i][j][k] << " ";
11: std::cout << std::endl; // "X X X X X X X X "
0 件のコメント:
コメントを投稿