クラス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
が表示されたというわけなんだね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます