#はじめに
情報理工学系の大学院生です。
STLについて調べた内容を自分なりに理解できるように書き溜めておこうと思って記事にしました。
わかりにくいところがあるかもしれません。その時は申し訳ございません。
#STLって?
C++の標準ライブラリに含まてている。standard template libraryの略称です。
templateと呼ばれるc++の機能を用いて変数の型の対する依存性の少ない機能が実装されています。
STLの一覧はこちらのWikipedia
一覧から、主にコンテナと呼ばれる値を格納するクラスとそれを扱うアルゴリズムや、イテレータが実装されているものになります。
#vector
vectorはコンテナと呼ばれるものです。
vectorのインスタンスは次のように作ります。
std::vector<int> v = {2,3,5};
いかには簡単に使えるメソッドについて書いておきます。
ほかにもありますが、使い方がわかりやすいものだけ。
詳しく知りたい方は、referenceを参照してください。
###コンテナの状態
メソッド名 | 機能 |
---|---|
size | 要素の個数を返す |
empty | 要素が空かどうかを返す |
###要素へのアクセス
名前 | 機能 |
---|---|
operator[i] | i番目の要素にアクセス |
at(i) | i番目の要素にアクセス |
###イテレータの取得
- イテレータとは
イテレータ-Wikipedia
https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%86%E3%83%AC%E3%83%BC%E3%82%BF
イテレータ(英語: iterator)とは、プログラミング言語において配列やそれに類似する集合的データ構造(コレクションあるいはコンテナ)の各要素に対する繰り返し処理の抽象化である。実際のプログラミング言語では、オブジェクトまたは文法などとして現れる。
Cの配列(a[i])に対して繰り返し処理をするときにi++をしますが、それの抽象化のようなものです。
イテレータの主な構成要素については、以下の記事を見ると雰囲気がわかるかもしれません。
独自のイテレータを実装する
2. 機能の名前
名前 | 機能 |
---|---|
begin | 先頭の要素を指すイテレータを返す |
end | 末尾の要素を指すイテレータを返す |
if(std::vector<int>::iterator it = std::begin(v); it != std::end(v); it++){
//処理。実体へのアクセスは*itで行う。
}
###要素の追加と削除
メソッド名 | 機能 |
---|---|
push_back(element) | 末尾への追加 |
pop_back() | 末尾の要素を取り出し、削除 |
insert(iterator,element) | 要素の挿入 |
#おわりに
今回書くにあたって文中での引用以外に以下の記事を参考にさせていただきました。
Standard Template Library
STLとは
アロケータ|Programming Place Plus C++編
イテレータの解説をするなんて今更佳代
本記事を見ていただいてありがとうございました。
より良い記事になるように精進していきます。