C++primer学習ノート-標準ライブラリタイプvector

4280 ワード

3.3標準ライブラリタイプvector
標準ライブラリタイプvectorは、すべてのオブジェクトのタイプが同じオブジェクトのセットを表します.コレクション内の各オブジェクトには対応するインデックスがあり、インデックスはオブジェクトにアクセスするために使用されます.vectorは他のオブジェクトを「収容」しているため、vectorは「コンテナ」とも呼ばれます.
vectorの使用方法:1)適切なヘッダファイルを含まなければならない2)using宣言#include
using std::vector
vectorはクラステンプレート自体がクラスまたは関数ではなく、テンプレートをコンパイラとしてクラスまたは関数を生成する記述として見ることができます.コンパイラがテンプレートに基づいてクラスまたは関数を作成するプロセスを「インスタンス化」と呼びます.
テンプレートを使用する場合は、コンパイラがクラスまたは関数のインスタンスをどのようなタイプにするべきかを指定する必要があります.
クラステンプレートでは、テンプレートがどのようなクラスにインスタンス化されるか、どのような情報を提供するかをテンプレートによって決定する追加情報を指定します.情報の提供方法:テンプレート名の後ろに尖ったカッコを付けて、カッコ内に情報を入れます.、
vector<int> ivec;        //ivec  int     
vector<vector<string>> files;   //       vector  

vectorはタイプではなくテンプレートであり、vectorによって生成されるタイプにはvectorの要素のタイプ(例えばvector)が含まれる必要があります.
vectorは、ほとんどのタイプのオブジェクトを要素として収容できます.参照はオブジェクトではないので、参照を含むvectorは存在しません.
3.3.1オブジェクトの定義と初期化
いずれのタイプと同様にvectorテンプレートはベクトルを定義および初期化する方法を制御します.
vectorオブジェクトを初期化する方法
1) vector v1            v1    vector,       T   ,       
2) vector v2(v1)        v2    v1       
3) vector v2 = v1          v2(v1), v2    v1       
4) vector v3(n, val)    v3   n      ,        val
5) vector v4(n)         v4   n              
6) vector v5{a,b,c...}  v5           ,             
7) vector v5={a,b,c...}    v5{a,b,c...}

デフォルトでvectorオブジェクトを初期化し、指定したタイプの空のvectorを作成します.
vector<string> svec;         //     ,svec       

リスト初期化vectorオブジェクト
vector<string> v1{"a", "b", "c"};  //     
vector<string> v2("a", "b", "c");  //  

指定した数の要素を作成
vector<int> ivec(10, -1);    //10 int     ,        -1
vector<string> svec(10, "Hi!");  //10 string     ,        "Hi!"

値の初期化は、通常、vectorオブジェクトが収容する要素の数だけを提供し、初期値を省略することなく使用できます.ライブラリは、値が初期化された要素の初期値を作成し、コンテナ内のすべての要素に割り当てます.この初期値はvectorオブジェクトの要素のタイプによって決まります.場合