C++ 標準テンプレートライブラリ (STL)

C/C++ リファレンスより
まあ、常識の範囲内なんだけど。(←その割に最近さらっとコーディングミスった。)

C++ 標準テンプレートライブラリ (STL)

C++ STL (標準テンプレートライブラリ) は、 一般的なクラステンプレートとアルゴリズムの集合であり、 プログラマが キュー、 リスト や スタック のような標準的なデータ構造を容易に実装できるようにする。

C++ STL はプログラマに、3 種に分類された次の構成物を提供する:

順序コンテナ

  • C++ ベクタ
  • C++ リスト
  • C++ 両端キュー

コンテナアダプタ

  • C++ スタック
  • C++ キュー
  • C++ 優先順位付きキュー

連想コンテナ

  • C++ ビットセット
  • C++ マップ
  • C++ マルチマップ
  • C++ セット
  • C++ マルチセット

んで、その中でも良く使う代表的なもの。(主観)

C++ ベクタ(std::vector)

ベクタは、配列と同様に格納された連続要素を保持する。 ベクタ要素へのアクセス、ならびに要素の追加は 定数時間 で完了する。 一方で特定の値を突き止める、ならびにベクタへの要素挿入は 線形時間 を要する。

  • コンストラクタ ベクタを生成する関数
  • 演算子 ベクタの割り当て、比較を行う
  • assign() ベクタに要素を割り当てる
  • at() 指定した位置の要素を返す
  • back() 最終要素を返す
  • begin() 先頭を指すイテレータを返す
  • capacity() ベクタが保持できる要素数
  • clear() 全ての要素を削除する
  • empty() ベクタが空なら真
  • end() 末尾を指すイテレータを返す
  • erase() 要素を削除する
  • front() 先頭要素を返す
  • get_allocator() ベクタのアロケータを返す
  • insert() 要素をベクタに挿入する
  • max_size() ベクタが保持できる最大要素数を返す
  • pop_back() 最終要素を削除する
  • push_back() ベクタの末尾に要素を追加する
  • rbegin() ベクタ末尾を指すリバースイテレータを返す
  • rend() ベクタ先頭を指すリバースイテレータを返す
  • reserve() ベクタが保持できる要素数を設定する
  • resize() ベクタのサイズを変更する
  • size() ベクタ中の要素数を返す
  • swap() 二つのベクタを入れ替える

C++ リスト(std::list)

リストは連結リストに格納された要素のシーケンスである。 ベクタ と比較して挿入と削除は速く、ランダムアクセスは遅い。


スポンサーリンク
  • assign() リストに要素を割り当てる
  • back() 最終要素を返す
  • begin() 先頭を指すイテレータを返す
  • clear() 全ての要素を削除する
  • empty() リストが空なら真
  • end() 末尾を指すイテレータを返す
  • erase() 要素を削除する
  • front() 先頭要素を返す
  • get_allocator() リストのアロケータを返す
  • insert() 要素をリストに挿入する
  • max_size() リストが保持できる最大要素数を返す
  • merge() 二つのリストを併合する
  • pop_back() 最終要素を削除する
  • pop_front() 先頭要素を削除する
  • push_back() リストの末尾に要素を追加する
  • push_front() リストの先頭に要素を追加する
  • rbegin() リストの末尾を指すリバースイテレータを返す
  • remove() リストから要素を削除する
  • remove_if() 条件を満たす要素を削除する
  • rend() リストの先頭を指すリバースイテレータを返す
  • resize() リストのサイズを変更する
  • reverse() リストを反転させる
  • size() リスト中の要素数を返す
  • sort() リストをソートする
  • splice() 二つのリストを併合する
  • swap() 二つのリストを入れ替える
  • unique() 重複する要素を削除する

C++ マップ(std::map)

C++ マップはキー/値の対を保持する連想コンテナである。

  • begin() マップの先頭を指すイテレータを返す。
  • clear() 全ての要素を削除する
  • count() キー値が一致する要素の数を返す
  • empty() マップが空なら真
  • end() マップの末尾を指すイテレータを返す
  • equal_range() 特定のキーと一致する先頭・末尾要素を指すイテレータを返す
  • erase() 要素を削除する
  • find() 要素を検索する
  • get_allocator() マップのアロケータを返す
  • insert() 要素を挿入する
  • key_comp() キーを比較する関数を返す
  • lower_bound() キーが特定の値以上である最初の要素を指すイテレータを返す
  • max_size() 要素の最大数を返す
  • rbegin() マップの末尾を指すリバースイテレータを返す
  • rend() マップの先頭を指すリバースイテレータを返す
  • size() マップ中の要素数を返す
  • swap() 二つのマップを入れ替える
  • upper_bound() キーが特定の値を越える最初の要素を指すイテレータを返す
  • value_comp() 値を比較する関数を返す

C++ イテレータ

以下のサンプルコードはvectorのイテレータを作成して使用している:

イテレータが指すコンテナの要素にアクセスするためには参照はずし(*演算子)を利用する。

某ライブラリの影響で、○○.append()とか書きそうになるの。


スポンサーリンク

関連記事

iOSデバイスと接続して連携するガジェットの開発方法
Raspberry Piでセンサーの常時稼働を検討する
OpenGVのライブラリ構成
科学技術計算向けスクリプト言語『Julia』
『手を動かしながら学ぶエンジニアのためのデータサイエンス』ハンズオンセミナーに行ってきた
3Dグラフィックスの入門書
Amazon Web ServicesでWordPress
OpenCV 3.3.0-RCでsfmモジュールをビルド
Mask R-CNN:ディープラーニングによる一般物体検出・Instance Segmentatio...
OpenCVのための軽量GUIライブラリ『cvui』
HD画質の無駄遣い
オープンソースの物理ベースレンダラ『Mitsuba』をMayaで使う
Google Chromecast
フォトンの放射から格納までを可視化した動画
フィーリングに基づくタマムシの質感表現
オープンソースの顔の動作解析ツールキット『OpenFace』
UnityプロジェクトをGitHubで管理する
オープンソースの人体モデリングツール『MakeHuman』のAPI開発プロジェクトがスタート
Deep Learningとその他の機械学習手法の性能比較
Unreal Engineの薄い本
WordPress on Google App Engineを1週間運用してみて
組み込み向けのWindows OS 『Windows Embedded』
RSSフィードを読込んで表示するWordpressプラグイン『RSSImport』
OpenCVの超解像処理モジュール『Super Resolution』
PythonでMayaのShapeノードプラグインを作る
OpenCVベースの背景差分ライブラリ『BGSLibrary』
ポリゴン用各種イテレータと関数セット
自前のShaderがおかしい件
機械学習手法『Random Forest』
CGレンダラ研究開発のためのフレームワーク『Lightmetrica (ライトメトリカ)』
Multi-View Stereoによる3次元復元ライブラリ『OpenMVS』
iOSデバイスのためのフィジカル・コンピューティングツールキット『konashi(こなし)』
Unity Scriptコーディング→Unreal Engine Scriptコーディング
Mechanizeで要認証Webサイトをスクレイピング
オープンソースのロボットアプリケーションフレームワーク『ROS (Robot Operating S...
MRenderUtil::raytrace
R-CNN (Regions with CNN features):ディープラーニングによる一般物体...
仮想関数
Seleniumを使ったFXや株の自動取引
OpenCVベースのマーカーARライブラリ『OpenAR』
Boost オープンソースライブラリ
C#で使える可読性重視のディープラーニングライブラリ『KelpNet』

コメント