標準テンプレートクラスライブラリ(STL)を用いてみよう
ソーラー「C++標準ライブラリには
さまざまな便利な関数を利用することのできる
ヘッダファイル
や
変数の型の定義などが用意されています
C++標準ライブラリを用いることにより
自ら長大なプログラムを記述することなく
プログラムを記述することができるというわけです
さらに
C++標準ライブラリには
Standard Template Library(標準テンプレートライブラリ)
STL
とよばれるものが用意されており
Standard Template Library(標準テンプレートライブラリ)
STL
には
様々な機能を持つクラステンプレートや関数テンプレートなどが
用意されています
今日は
Standard Template Library(標準テンプレートライブラリ)
STL
に用意されている
<vector>と呼ばれるヘッダファイルについて考察してみたいと思います
ヘッダファイル<vector>をもちいれば
vectorクラス
と
vectorクラスのクラステンプレートvector<T>
を使用することができるようになります
vectorクラスには
あらかじめ
メンバ関数として
push_buck関数
begin関数
insert関数
end関数などが用意されており
複数のデータを便利に管理することができます」
マックス「微妙い 説明だな」
ソーラー「
まずは
次のプログラムをご覧ください
👇
#include <iostream>
#include <vector>//🌞ヘッダファイル<vector>をインクルードしています
using namespace std;
int main() {
vector<int> a{1,2,3};
return 0;
}
プログラムの実行結果
続行するには何かキーを押して下さい . . .
ぶーにゃん「にゃにも 表示されていないにゃん・・・」
マックス「
vector<int> a{1,2,3};
ってなんじゃらほい?
もしかして・・・
<int>が登場してくるということは
クラステンプレートがからんでいたりしてな
ははははは」
ソーラー「意味はとても簡単です
vector<int> a{1,2,3};
の
vector<int>は
クラステンプレートvector<T>のテンプレートパラメータに
テンプレート引数intが代入されています」
マックス「なんだ
やはり
クラステンプレートvector<T>がもちいられているのか」
ソーラー「そして
vector<int> a{1,2,3};
と
vector<int>にa{1,2,3}
がくっついていますね」
マックス「そこそこっ
なんで
vector<int>にa{1,2,3}
がくっついているんだ?」
ソーラー「
vector<int> a{1,2,3};
はですね
これは
aのvector<int>型のオブジェクト宣言なんです」
マックス「aのvector<int>型のオブジェクト宣言
ということは
vector<int>型のオブジェクトaを作製しているってことか」
ソーラー「そうなんです
vector<int>型のオブジェクトaを作製すると
vector<int>型のオブジェクトaのメンバ関数
a.push_buck()
a.begin()
a.insert()
a.end()
等が使用することができるようになります」
マックス「なるほど
ところで
この
aにくっついている{1,2,3}は?」
ソーラー「
aのvector<int>型のオブジェクト宣言
vector<int> a{1,2,3};
が実行されると
ある連続したメモリに
数値データ
1
2
3
が
仲良くならんで格納されることになります」
マックス「はい?
vector<int> a{1,2,3};
が実行されると
数値データ
1
2
3
が連続したメモリに格納される?
vector<int> a{1,2,3};
の実行により
数値データをメモリに格納することができるのか?
aの配列宣言
int a[3]={1,2,3};
が実行されると
連続したメモリに
1
2
3
が
格納されたが・・・
そういうノリなのか?」
ソーラー「
そうなんです
aのvector<int>型のオブジェクト宣言
vector<int> a{1,2,3};
が実行されると
aの配列宣言
int a[3]={1,2,3};
が実行された時と同じように
連続したメモリに
1
2
3
が格納されるんですよ」
マックス「なんだ
単純な仕組みじゃないか」
ソーラー「では なぜ
テンプレートパラメータTに
vector<int> a{1,2,3};
と
テンプレート引数intが代入されているの?
と
思った方がおられるかもしれませんね」
てんC「あっそうですね」
ぶーにゃん「なんでかにゃ~ん~😺」
ソーラー「それは
vector<int> a{1,2,3};
テンプレートパラメータTに
vector<int> a{1,2,3};
と
テンプレート引数intを代入したのは
整数値データ
1
2
3
をメモリに格納したいからなんですぅ」
マックス「じゃあ
実数値データ
1.11111
2.22222
3.33333
を
メモリに格納したければ・・・
vector<float> a{1.11111,2.22222,3.33333};
と
テンプレートパラメータTに
テンプレート引数floatを代入すればいいってことか」
ソーラー「そうなんですぅ
とっても簡単だね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます