2016年3月5日土曜日

c++ の vector を次元配列として使うときの大きさと初期値の決め方

c++ の vector をた次元配列として使うときの大きさと初期値の決め方をど忘れしていたのでメモ

・変数定義と初期値+範囲決めが同時の時
std::vector<std::vector<int>> vv(col, std::vector<int>(raw, 1));
                                                      ↑一つ目の列の大きさ
                                                                                          ↑一つ目の列の大きさ
                                                                                                ↑代入する初期値

・変数定義と初期値+範囲決めが別(クラス等で定義と初期値代入が別の時に使用)
std::vector<std::vector<int>> vv2;
vv2 = std::vector<std::vector<int>>(col, std::vector<int>(raw, -1));

サンプルコードを見てください。
#include <iostream>
#include <vector>

int main(){
int col = 5;
int raw = 7;

// 定義と初期値+範囲決めが同時
std::vector<std::vector<int>> vv(col, std::vector<int>(raw, 1));

// 大きさチェック
std::cout << "Column size:" << vv.size() << std::endl;
std::cout << "Raw size:" << vv.front().size() << std::endl;
// 変数チェック
for (int i = 0; i < col; i++){
for (int j = 0; j < raw; j++){
std::cout << vv[i][j] << "\t";
}
std::cout << std::endl;
}

// 定義と初期値+範囲決めが別
std::vector<std::vector<int>> vv2;
vv2 = std::vector<std::vector<int>>(col, std::vector<int>(raw, -1));

// 変数チェック
for (int i = 0; i < col; i++){
for (int j = 0; j < raw; j++){
std::cout << vv2[i][j] << "\t";
}
std::cout << std::endl;
}

return 0;
}

ちなみに、3次元は
std::vector<std::vector<std::vector<int>>> vv=vector<vector<vector<int>>>(5, vector<vector<int>>(6, vector<int>(7, 0)));

0 件のコメント:

コメントを投稿