「std::vector」の版間の差分

提供: C++入門
移動: 案内検索
(関連項目)
行1: 行1:
<!--
+
[[std::vector]] は、[[C++ライブラリ]] で提供される[[テンプレート]]を利用した動的な配列です。
vim: filetype=mediawiki
+
-->
+
 
+
[[std::vector]] は、[[C++ライブラリ]] で提供される[[template]]を利用した動的な配列です。
+
 
+
読み方
+
  
 +
'''読み方'''
 
;[[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などのデータを管理するテンプレートクラスをコンテナと呼びます。

インタフェース

std::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

C++11forautoを併用すると簡単に書けます。

#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の使用例

関連項目