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() 二つのベクタを入れ替える
リストは連結リストに格納された要素のシーケンスである。 ベクタ と比較して挿入と削除は速く、ランダムアクセスは遅い。
スポンサーリンク
- 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++ マップはキー/値の対を保持する連想コンテナである。
- 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() 値を比較する関数を返す
以下のサンプルコードはvectorのイテレータを作成して使用している:
vector<<span class="synType">int</span>> the_vector; vector<<span class="synType">int</span>>::iterator the_iterator; <span class="synStatement">for</span>( <span class="synType">int</span> i=<span class="synConstant">0</span>; i < <span class="synConstant">10</span>; i++ ) the_vector.push_back(i); <span class="synType">int</span> total = <span class="synConstant">0</span>; the_iterator = the_vector.begin(); <span class="synStatement">while</span>( the_iterator != the_vector.end() ) { total += *the_iterator; the_iterator++; } cout << <span class="synConstant">"Total="</span> << total << endl;
イテレータが指すコンテナの要素にアクセスするためには参照はずし(*演算子)を利用する。
某ライブラリの影響で、○○.append()とか書きそうになるの。
スポンサーリンク
関連記事
OpenCVでPhotoshopのプラグイン開発
Mayaのシェーディングノードの区分
BlenderのPython環境にPyTorchをインストールする
組み込み向けのWindows OS 『Windows Embedded』
Mechanizeで要認証Webサイトをスクレイピング
Webサイトのワイヤーフレームが作成できるオンラインツール
Google App Engineのデプロイ失敗
PythonでMayaのShapeノードプラグインを作る
CycleGAN:ドメイン関係を学習した画像変換
OpenMesh:オープンソースの3Dメッシュデータライブラリ
JavaScriptとかWebGLとかCanvasとか
.NETで使えるTensorFlowライクなニューラルネットワークライブラリ『NeuralNetwo...
OpenCVのバージョン3が正式リリースされたぞ
OpenCVで平均顔を作るチュートリアル
ポリゴンジオメトリ処理ライブラリ『pmp-library (Polygon Mesh Process...
OpenCLに対応したオープンソースの物理ベースレンダラ『LuxRender(ルクスレンダー)』
PGGAN:段階的に解像度を上げて学習を進めるGAN
機械学習に役立つPythonライブラリ一覧
ブログをGoogle App EngineからAmazon EC2へ移行
このブログのデザインに飽きてきた
ブログのデザイン変えました
ManimML:機械学習の概念を視覚的に説明するためのライブラリ
Google Chromecast
今年もSSII
OpenCV 3.1のsfmモジュールを試す
UnityのMonoBehaviourクラスをシングルトン化する
スクレイピング
SVM (Support Vector Machine)
Mean Stack開発の最初の一歩
OpenMVSのサンプルを動かしてみる
Unityで画面タッチ・ジェスチャ入力を扱う無料Asset『TouchScript』
OpenGVの用語
cvui:OpenCVのための軽量GUIライブラリ
hloc:SuperGlueで精度を向上させたSfM実装
OpenCVで顔のランドマークを検出する『Facemark API』
MFnMeshクラスのsplit関数
Google XML Sitemap Generatorプラグインを3.4.1へダウングレード
UnityからROSを利用できる『ROS#』
WordPressの表示を高速化する
第1回 3D勉強会@関東『SLAMチュートリアル大会』
オープンソースの顔認識フレームワーク『OpenBR』
AndroidもopenGLも初心者さ (でもJavaは知ってるよ)
コメント