私はC++を学び始めました。私は多次元配列とベクトルの構文を理解しようとしていましたが、かなり混乱し始めました。私は多次元配列を初期化する方法を得る。それは簡単なようです:行に続いて列。しかし、ベクターはもう少し挑戦的です。私は同じ方法でそれらを初期化する必要がありますか、またはベクトルのベクトルを作成しますか?誰か助けてください。C++の多次元ベクトル
-1
A
答えて
2
は、多次元ベクトルを宣言します。
vector<vector<int> > test(4,vector<int>(20));
彼らは、必要に応じて変更することができるベクトルですので、これは、2Dベクトルもちろん4 X 20が作成されます。インデックス付けは配列test[3][19]
と同じです。
1
C++ 11を使用できる場合は、多次元配列とベクトルのベクトルを同様の方法で初期化できます。
int a1[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
std::vector<std::vector<int>> a2 = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
ただし、定義されていない動作に移行することなく要素にアクセスするには、理解しなければならない相違点があります。
多次元配列の場合、配列の要素のメモリは連続して割り当てる必要があります。ベクトルのベクトルの場合、要素のメモリは、おそらくは分離している可能性があります。 a1
ため
メモリ:a2
(最も可能性が高い)ため
a1[0][0] a1[1][0] a1[2][0]
| | |
v v v
+---+---+---+---+---+---+---+---+---+
| | | | | | | | | |
+---+---+---+---+---+---+---+---+---+
メモリ:また、列の数が同じでないとしたベクトルのベクトルを定義することが可能
a2[0][0]
|
v
+---+---+---+
| | | |
+---+---+---+
a2[1][0]
|
v
+---+---+---+
| | | |
+---+---+---+
a2[2][0]
|
v
+---+---+---+
| | | |
+---+---+---+
あります各行について。
std::vector<std::vector<int>> a2 = { {1, 2, 3}, {4, 5}, {6, 7, 8, 9} };
多次元配列では、列の数は各行で同じになることが保証されています。
上記の多次元配列a1
が与えられた場合、a1[1][2]
は有効な要素になり、a1[2][3]
は無効な要素になります。上記の行を使用したベクトルのベクトルの場合、a2[1][2]
は有効な要素ではなく、a2[2][3]
は有効な要素です。
関連する問題
- 1. 多次元ベクトルC++
- 2. 多次元ベクトル?
- 3. 多次元ベクトル
- 4. 多次元ベクトル
- 5. 多次元ベクトルの分類
- 6. 動的多次元ベクトル
- 7. 2次元ベクトルC++
- 8. 2次元ベクトルC++のエラー
- 9. 多次元ベクトルの保存と比較
- 10. 多次元配列から1次元ベクトルへの変換
- 11. 多次元リストC#
- 12. 多次元リニアアレイC
- 13. 多次元のC#でのベクトル型クラス構造
- 14. C++ debug:2次元ベクトル
- 15. PHPの多次元C#
- 16. C++の多次元配列
- 17. C:多次元配列
- 18. c#セッション多次元配列
- 19. コピー多次元配列C
- 20. C位、多次元アレイ
- 21. 固有/ C++多次元コンテナ
- 22. ベクトルを多次元ベクトルに挿入する方法は?
- 23. in C++ 3D次元ベクトルで3D次元ベクトルを宣言する方法
- 24. n次元ベクトル
- 25. 多次元ブールインデックス多次元配列へ
- 26. ライツアウトC#の多次元配列
- 27. 構造体の多次元配列C#
- 28. 構造体のC++多次元配列
- 29. C#の多次元データ構造
- 30. C++の多次元データ処理
ベクトルのベクトル(ベクトルの...)。 –