「std::vector」の版間の差分
提供: C++入門
(→関連項目) |
|||
| 行1: | 行1: | ||
| − | + | [[std::vector]] は、[[C++ライブラリ]] で提供される[[テンプレート]]を利用した動的な配列です。 | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | [[std::vector]] は、[[C++ライブラリ]] で提供される[[ | + | |
| − | + | ||
| − | + | ||
| + | '''読み方''' | ||
;[[std::vector]]: えすてぃーでぃー べくたー | ;[[std::vector]]: えすてぃーでぃー べくたー | ||
| 行12: | 行7: | ||
== 概要 == | == 概要 == | ||
| − | |||
[[C++]] の配列は、サイズをプログラマが管理しますが、[[std::vector]] は、配列のサイズを意識せずに、プログラミングできます。 | [[C++]] の配列は、サイズをプログラマが管理しますが、[[std::vector]] は、配列のサイズを意識せずに、プログラミングできます。 | ||
| + | STLに含まれるvectorなどのデータを管理するテンプレートクラスをコンテナと呼びます。 | ||
* [[std::vector シンプルな例]] | * [[std::vector シンプルな例]] | ||
| − | |||
== インタフェース == | == インタフェース == | ||
| 行91: | 行85: | ||
|} | |} | ||
| − | == | + | == サンプルコード == |
| + | === auto1.cpp === | ||
| + | [[C++11]]の[[for]]と[[auto]]を併用すると簡単に書けます。 | ||
| + | <syntaxhighlight lang="cpp"> | ||
| + | #include <iostream> | ||
| + | #include <vector> | ||
| + | using namespace std; | ||
| + | int | ||
| + | main(int argc, char const* argv[]) | ||
| + | { | ||
| + | std::vector<int> v; | ||
| + | v.push_back (1); | ||
| + | v.push_back (2); | ||
| + | v.push_back (3); | ||
| + | for (auto x: v) { | ||
| + | cout << x << endl; | ||
| + | } | ||
| + | return 0; | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | === auto2.cpp === | ||
| + | [[C++11]]では、コンテナの初期化([[std::initializer_list]])もできます。 | ||
| + | <syntaxhighlight lang="cpp"> | ||
| + | #include <iostream> | ||
| + | #include <vector> | ||
| + | using namespace std; | ||
| + | |||
| + | int | ||
| + | main(int argc, char const* argv[]) | ||
| + | { | ||
| + | std::vector<int> v{1,2,3}; | ||
| + | for (auto x: v) { | ||
| + | cout << x << endl; | ||
| + | } | ||
| + | return 0; | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | == vectorの使用例 == | ||
| + | * [[std::vector シンプルな例]] | ||
| + | |||
| + | == 関連項目 == | ||
* [[C++ライブラリ]] | * [[C++ライブラリ]] | ||
* [[boost::find]] | * [[boost::find]] | ||
| 行99: | 行134: | ||
* [[std::sort]] | * [[std::sort]] | ||
* [[std::rotate]] | * [[std::rotate]] | ||
| + | * [[std::initializer_list]] | ||
| + | * [[C++11]] | ||
| + | <!-- vim: filetype=mediawiki --> | ||
2013年12月28日 (土) 15:00時点における版
std::vector は、C++ライブラリ で提供されるテンプレートを利用した動的な配列です。
読み方
- std::vector
- えすてぃーでぃー べくたー
概要
C++ の配列は、サイズをプログラマが管理しますが、std::vector は、配列のサイズを意識せずに、プログラミングできます。 STLに含まれるvectorなどのデータを管理するテンプレートクラスをコンテナと呼びます。
インタフェース
| メンバ | 意味 |
|---|---|
| constructor | コンストラクタ |
| destrctor | デストラクタ |
| operator= | operator= |
| reserve | std::vecotrのキャパシティを予約します。 |
| capacity | 割り当てられているストレージキャパシティのサイズを返します。 |
| size | サイズを返します。 |
| max_size | 最大サイズを返します。 |
| resize | サイズをリサイズします。 |
| shrink_to_fit | コンテナのキャパティにフィットしたサイズまで縮小します。 |
| push_back | std::vector の最後に新しい要素を追加します。要素は、コピー、もしくは、move されます。 |
| pop_back | std::vector の最後の要素を取り除きます。コンテナのサイズが1つ小さくなります。 |
| insert | std::vector に新しい要素を追加します。 |
| erase | std::vector の1つの要素、または、要素のレンジを削除します。 |
| clear | std::vector の要素をすべて削除します。 |
| empty | std::vector が空であれば、trueを返し、そうでなければ、falseです。 |
| begin | std::vector の最初の要素のイテレータを返します。 |
| end | std::vector の最後の要素の次のイテレータを返します。 |
| front | std::vector の最初の要素の参照を返します。 |
| back | std::vector の最後の要素の参照を返します。 |
| at | std::vector の n 番目の要素の参照を返します。無効な要素にアクセスしたとき、std::out_of_range の例外を送出します。operator[]は、境界チェックをしません。 |
| operator[] | std::vector の n 番目の要素の参照を返します。operator[]は、境界チェックをしません。 |
| :vector:: |
サンプルコード
auto1.cpp
#include <iostream> #include <vector> using namespace std; int main(int argc, char const* argv[]) { std::vector<int> v; v.push_back (1); v.push_back (2); v.push_back (3); for (auto x: v) { cout << x << endl; } return 0; }
auto2.cpp
C++11では、コンテナの初期化(std::initializer_list)もできます。
#include <iostream> #include <vector> using namespace std; int main(int argc, char const* argv[]) { std::vector<int> v{1,2,3}; for (auto x: v) { cout << x << endl; } return 0; }