「std::vector」の版間の差分
提供: C++入門
(→インタフェース) |
|||
行83: | 行83: | ||
| [[std::vector::operator[]|operator[]]] | | [[std::vector::operator[]|operator[]]] | ||
| [[std::vector]] の n 番目の要素の参照を返します。[[std::vector::operator[]|operator[]]]は、境界チェックをしません。 | | [[std::vector]] の n 番目の要素の参照を返します。[[std::vector::operator[]|operator[]]]は、境界チェックをしません。 | ||
+ | |- | ||
+ | | [[std::vector::shrink_to_fit]] | ||
+ | | [[C++11]]で追加された、コンテナサイズを領域に合わせます。メモリの解放に利用します。 | ||
|- | |- | ||
| [[std::vector::|:vector::]] | | [[std::vector::|:vector::]] |
2013年12月28日 (土) 18:36時点における版
std::vector は、C++ライブラリ で提供されるテンプレートを利用した動的な配列です。
読み方
- std::vector
- えすてぃーでぃー べくたー
目次
概要
C++ の配列は、サイズをプログラマが管理しますが、std::vector は、配列のサイズを意識せずに、プログラミングできます。 STLに含まれるvectorなどのデータを管理するテンプレートクラスをコンテナと呼びます。
インタフェース
メンバ | 意味 |
---|---|
constructor | vectorのコンストラクタ。vectorを初期化します。 |
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[]は、境界チェックをしません。 |
std::vector::shrink_to_fit | C++11で追加された、コンテナサイズを領域に合わせます。メモリの解放に利用します。 |
: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; }
vectorの使用例
vectorを連結する例
std::vectorは、v1+=v2;やv0=v1+v2;といった連結ができません。 std::vectorの連結は、std::vector::insertを利用して、実現できます。
ソースコード vector_add_vector1.cpp
#include <iostream> #include <vector> using namespace std; int main(int argc, char const* argv[]) { vector<int> v1{1,2,3}, v2{4,5,6}; v1.insert(v1.end(), v2.begin(), v2.end()); for(auto i: v1) { cout << i << " "; } cout << endl; return 0; }
コンパイル
g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \ -Wl,-rpath=/usr/local/lib/gcc49 vector_add_vector1.cpp -o vector_add_vector1
実行例
% ./vector_add_vector1 1 2 3 4 5 6
vecotrをソートする
std::vectorをソート(sort)するには、std::sortを利用します。 vectorをソートしたり、構造体のvectorをソートできます。 詳細については、std::sortをご参照ください。
関連項目
- C++ライブラリ
- boost::find
- boost::sort
- BOOST_FOREACH
- std::sort : std::vectorをソートします。
- std::rotate
- std::initializer_list
- C++11