size関数を用いてクラステンプレートを用いてメモリにデータが格納できる個数を調べることができます
ソーラー「オブジェクト宣言
array<int, 5> arr{ 1,2,3,4,5 };
や
vector<int> vec{ 1,2,3,4,5 };
を実行することにより
数値データ
1
2
3
4
5
をメモリに格納することができました
このとき
array<int, 5> arr{ 1,2,3,4,5 };
や
vector<int> vec{ 1,2,3,4,5 };
の{}ブロック内の
1
2
3
4
5
を
要素といいます
そして
{}ブロック内には
1
2
3
4
5
の5つの要素が記述されています
要素の総数は5となっています
この5を要素数といいます」
ソーラー「ようは
array<int, 5>
は
int型の数値データを5つ格納できる容量があるというわけです
そして
クラスarray<int, 5>型が
格納できる数値データの最大個数を調べることができるのが
クラスarray型のクラステンプレートのメンバ関数である
size関数です
」
マックス「たぶん
size関数を使わなくても
array<int, 5>
を見れば
クラスarray<int, 5>型が
格納できる数値データの最大個数は5だとすぐわかるんじゃないか?」
てんC「な、なぜ それがわかったのですか?」
マックス「・・・い、いや・・・
ふつうにそう思ったんだが・・・」
ソーラー「それでは
size関数を使って
クラスarray<int, 5>型が
格納できる数値データの最大個数を調べてみたいと思います
その時のプログラムはこちらです
👇
#include <iostream>
#include <vector>
#include <array>
using namespace std;
int main()
{
array<int, 5> arr{ 1,2,3,4,5 };
cout << arr.size() << "\n";
vector<int> vec{ 1, 2, 3, 4, 5 };
cout << vec.size() << "\n";
return 0;
}
プログラムの実行結果
5
5
ソーラー「このプログラムでは
array<int, 5> arr{ 1,2,3,4,5 };
の実行により
1
2
3
4
5
がメモリに格納されています
そして次は
cout << arr.size() << "\n";
の実行ですね
arr.size()は
クラスarray<int, 5>型のオブジェクトarrのメンバ関数なんです
arr.size()が実行されると
クラスarray<int, 5>型が
格納できる数値データの最大個数5が表示されます」
マックス「もしかして
今 気づいたんだが
array<int, 5> arr{ 1,2,3,4,5 };
でなく
array<int, 5> arr{ 1,2,3,4 };
が実行されたら
クラスarray<int, 5>型が
格納できる数値データの最大個数はいくらになるんだ」
ソーラー「その場合も簡単です
array<int, 5> arr{ 1,2,3,4 };
が実行されると
arr[0]
arr[1]
arr[2]
arr[3]
arr[4]
に
1
2
3
4
0👈ココに注目してください
が格納されることになります
そうなんです
つまり
クラスarray<int, 5>型が
格納できる数値データの最大個数は5ですが
array<int, 5> arr{ 1,2,3,4 };
の
arr{ 1,2,3,4 }
のように
ブロック内に4つしか数値データ、要素を記述しない場合は
arr{ 1,2,3,4,0 }
のように
0が記述されたと見なされるんです
つまり
記述された要素数が
格納できる数値データの最大個数5に足りない場合は
足りない要素数の分だけ
0が記述されたと見なされるんです
ということは
array<int, 5> arr0{ };
array<int, 5> arr1{ 1 };
array<int, 5> arr2{ 1,2 };
array<int, 5> arr3{ 1,2,3 };
array<int, 5> arr4{ 1,2,3,4 };
の
クラスarray<int, 5>型のオブジェクト宣言のように
記述された要素数が
格納できる数値データの最大個数5に足りない場合でも
array<int, 5> arr0{ 0,0,0,0,0 };
array<int, 5> arr1{ 1,0,0,0,0 };
array<int, 5> arr2{ 1,2,0,0,0 };
array<int, 5> arr3{ 1,2,3,0,0 };
array<int, 5> arr4{ 1,2,3,4,0 };
が記述されたと見なされます
それとは関係なく
もともと
ブロック{}内に記述された要素数にかかわらず
クラスarray<int, 5>型が
格納できる数値データの最大個数は5となるんです
そのことを示すプログラムはこちらです
👇
#include <iostream>
#include <vector>
#include <array>
using namespace std;
int main()
{
array<int, 5> arr0{};
cout << arr0.size() << "\n";
array<int, 5> arr1{ 1 };
cout << arr1.size() << "\n";
array<int, 5> arr2{ 1,2 };
cout << arr2.size() << "\n";
array<int, 5> arr3{ 1,2,3 };
cout << arr3.size() << "\n";
array<int, 5> arr4{ 1,2,3,4 };
cout << arr4.size() << "\n";
vector<int> vec{ 1, 2, 3, 4, 5 };
cout << vec.size() << "\n";
return 0;
}
ビルド実行結果
5
5
5
5
5
5
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます