クラスvector型のクラステンプレートを用いてメモリにデータを格納して遊んでみよう

ソーラー「クラスvector型のクラステンプレートを用いて


メモリにデータを格納する方法



2次元配列を用いて


メモリにデータを格納する方法には違いがあるというわけです」


マックス「おお、なんか


クラスvector型のクラステンプレートを用いて


メモリにデータを格納する方法



2次元配列を用いて


メモリにデータを格納する方法より


より強化されていないか?」


ソーラー「さすがはC++言語といったところでしょうか」




さあ、みなさん


クラスvector型のクラステンプレートの使い方が


わかったところで


クラスvector型のクラステンプレートを用いて


メモリにデータを格納して遊んでみましょう



まずは


マックスさんさん!



マックス「よし、おれかっ



なら


このプログラムはどうだ!

👇

#include <iostream>


#include <vector>


using namespace std;


int main()

{

vector<vector<int>> a{ { 1,2,3 },{ 4,5,6 },{ 7,8,9 }};//👈ここに注目


cout << a[0][0] << "\n";

cout << a[0][1] << "\n";

cout << a[0][2] << "\n";

cout << a[1][0] << "\n";

cout << a[1][1] << "\n";

cout << a[1][2] << "\n";

cout << a[2][0] << "\n";

cout << a[2][1] << "\n";

cout << a[2][2] << "\n";

return 0;


}


プログラムの実行結果


1

2

3

4

5

6

7

8

9


int(イント)「なら


私も😊」

👇

#include <iostream>


#include <vector>


using namespace std;


int main()

{

vector<vector<int>> a{ { 1,2,3 },{ 4,5,6},{ 7,8,9 },{ 10,11,12 } };//👈ここに注目


cout << a[0][0] << "\n";

cout << a[0][1] << "\n";

cout << a[0][2] << "\n";

cout << a[1][0] << "\n";

cout << a[1][1] << "\n";

cout << a[1][2] << "\n";

cout << a[2][0] << "\n";

cout << a[2][1] << "\n";

cout << a[2][2] << "\n";

cout << a[3][0] << "\n";

cout << a[3][1] << "\n";

cout << a[3][2] << "\n";

return 0;


}


プログラムの実行結果


1

2

3

4

5

6

7

8

9

10

11

12


マックス「さらに


このプログラムはどうだ

👇

#include <iostream>


#include <vector>


using namespace std;


int main()

{

vector<vector<int>> a{ { 1,2,3 },{ 4,5,6 },{ 7,8,9 },{ 10,11,12 } ,{ 13,14,15 } };//👈ここに注目


cout << a[0][0] << "\n";

cout << a[0][1] << "\n";

cout << a[0][2] << "\n";

cout << a[1][0] << "\n";

cout << a[1][1] << "\n";

cout << a[1][2] << "\n";

cout << a[2][0] << "\n";

cout << a[2][1] << "\n";

cout << a[2][2] << "\n";

cout << a[3][0] << "\n";

cout << a[3][1] << "\n";

cout << a[3][2] << "\n";

cout << a[4][0] << "\n";

cout << a[4][1] << "\n";

cout << a[4][2] << "\n";

return 0;


}



プログラムの実行結果


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


てんC「では


私も 試してみたいと思います


#include <iostream>


#include <vector>


using namespace std;


int main()

{

vector<vector<int>> a{ { 1 },{ 2,3 },{ 4,5,6 },{ 7,8,9,10 },{ 11,12,13,14,15 } };//👈ここに注目


cout << a[0][0] << "\n";

cout << a[1][0] << "\n";

cout << a[1][1] << "\n";

cout << a[2][0] << "\n";

cout << a[2][1] << "\n";

cout << a[2][2] << "\n";

cout << a[3][0] << "\n";

cout << a[3][1] << "\n";

cout << a[3][2] << "\n";

cout << a[3][3] << "\n";

cout << a[4][0] << "\n";

cout << a[4][1] << "\n";

cout << a[4][2] << "\n";

cout << a[4][3] << "\n";

cout << a[4][4] << "\n";


return 0;


}


プログラムの実行結果


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


ソーラー「う、美しい」


マックス「いいじゃないか てんC


ならな


このプログラムはどうだ

👇

#include <iostream>


#include <vector>


using namespace std;


int main()

{

vector<vector<int>> a{{ 1 }};//👈ここに注目


cout << a[0][0] << "\n";

return 0;


}


プログラムの実行結果


1



ソーラー「


vector<vector<int>> a{ { 1 } };



a{ { 1 } }


にご注目下さい


一番外側の{}


のなかに


{ 1 }


が記述されています


この


{ 1 }



0から順に(👈ここがポイントです😊)


0


と番号を割り当てるとします


{ 1 }👈0


です



そして


{ 1 }


の中身の要素


1



0から順に(👈ここがポイントです😊)


0


と番号を割り当てるとします


1👈0



と番号が割り当てられるのですね


すると


a{ { 1 } }



1


{ 1 }


のなかの


1

の場所にあるわけですが(笑)


{ 1 }には


{ 1 }👈0


0を割り当てて


1には


1👈0



0を割り当てておいたので


1の配置されている場所は


00


で表すことができます


この


00

を[]で括って


[0][0]


とし


aをくっつけて


a[0][0]


としたものが


vector<vector<int>> a{ { 1 } };


により生成されるというわけです


もちろん


a[0][0]


1の配置されている場所


に対応しており


a[0][0]



1


を表すことになります


ですので


cout << a[0][0] << "\n";



が実行されると


1


がコマンドプロンプト画面に表示されることになります」


マックス「では😊


このプログラムはどうだ


👇


#include <iostream>


#include <vector>


using namespace std;


int main()

{

vector<vector<int>> a{{ }};//👈ここに注目


cout << a[0][0] << "\n";

return 0;


}


ビルド実行結果


Debug Assertion Failed!


Program: C:\WINDOWS\SYSTEM32\MSVCP1400.dll

File: c:\program files (x86)\microsoft visual

studio\2017\community\vc\tools\msvc\14.11.25503\include\ve

ctor

Line: 1796


Expression: vector subscript out of range


For information on how your program can cause an assertion

failure,see the Visual C++ documentation on asserts.


(Press Retry to debug the application)


ソーラー「 vector<vector<int>> a{{ }};


では


配列変数をいくつ生成するかコンパイラは判断できないため


それを指摘する文章


Expression: vector subscript out of range


が表示されたというわけなんだね」





  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る