vector

[機能]

  動的配列を保持します.C の配列と互換性を持ち,データ領域の連続性が保証されています.通常の動的配列の場合は,宣言時に大きさを宣言しなければなりませんが,vector の場合は必要ありません.また,要素数を途中で変更することも可能です.( STL )
template <class T, class Allocator = allocator<T> > class vector
		

[使用方法]
#include <vector>
using namespace std;
vector <T> 変数名;
	使用例:vector<int> x;   // 空の vector
	    vector<int> y(5, 0);   // 5 個の要素を 0 で初期化
	    vector<int> z(y);   // vector y で初期化
		
[メンバー関数等]

[演算子の多重定義]
    =  ==  <  <=  !=  >  >=  []
		

[使用例]

  1. vector の使用方法です.
    #include <stdio.h>
    #include <vector>
    using namespace std;
    
    void print(char *str, vector<int> &v) {
    	if (v.empty())
    		printf("  コンテナ %s は空です\n", str);
    	else {
    		vector<int>::iterator it;
    		printf("%s の要素数: %d\n", str, v.size());
    		for (it = v.begin(); it != v.end(); it++)
    			printf("  %d", *it);
    		printf("\n");
    	}
    }
    
    int main()
    {
    	int i1;
    	vector<int> v1, v2;
    	vector<int>::iterator it;
    					// 要素を最後に追加(サイズは自動的に増加)
    	printf("**初期設定**\n");
    	for(i1 = 0; i1 < 5; i1++)
    		v1.push_back(i1);
    	print("v1", v1);
    					// 配列と同様の参照も可能
    	printf("**参照**\n");
    	for (i1 = 0; i1 < 5; i1++)
    		printf("  %d", v1[i1]);
    	printf("\n");
    					// 2 番目の要素の前に要素を追加
    	printf("**2 番目の要素の前に要素を追加**\n");
    	it = v1.begin() + 1;
    	v1.insert(it, 5);
    	print("v1", v1);
    					// 3 番目の要素と最後の要素を削除
    	printf("**3 番目の要素と最後の要素を削除**\n");
    	it++;
    	v1.erase(it);
    	v1.pop_back();
    	print("v1", v1);
    					// 演算子で比較
    	printf("**比較**\n");
    	for(i1 = 0; i1 < 4; i1++)
    		v2.push_back(i1);
    	v2[1] = 5;   // このような参照も可能
    	print("v2", v2);
    	if (v1 == v2)
    		printf("  2 つのコンテナ内の要素はすべて等しい\n");
    					// v2 の最初の 3 つの要素を v1 に代入
    	printf("**v2 の最初の 3 つの要素を v1 に代入**\n");
    	v1.assign(v2.begin(), v2.end()-1);
    	print("v1", v1);
    					// v1 と v2 を入れ替える
    	printf("**v1 と v2 を入れ替える**\n");
    	print("入れ替え前:v1", v1);
    	print("入れ替え前:v2", v2);
    	v1.swap(v2);
    	print("v1", v1);
    	print("v2", v2);
    					// v1 のすべての要素を削除
    	printf("**v1 のすべての要素を削除**\n");
    	v1.clear();
    	print("v1", v1);
    
    	return 0;
    }
    
    (出力)
    
    **初期設定**
    v1 の要素数: 5
      0  1  2  3  4
    **参照**
      0  1  2  3  4
    **2 番目の要素の前に要素を追加**
    v1 の要素数: 6
      0  5  1  2  3  4
    **3 番目の要素と最後の要素を削除**
    v1 の要素数: 4
      0  5  2  3
    **比較**
    v2 の要素数: 4
      0  5  2  3
      2 つのコンテナ内の要素はすべて等しい
    **v2 の最初の 3 つの要素を v1 に代入**
    v1 の要素数: 3
      0  5  2
    **v1 と v2 を入れ替える**
    入れ替え前:v1 の要素数: 3
      0  5  2
    入れ替え前:v2 の要素数: 4
      0  5  2  3
    v1 の要素数: 4
      0  5  2  3
    v2 の要素数: 3
      0  5  2
    **v1 のすべての要素を削除**
      コンテナ v1 は空です
    			
[参照]

dequeJava の ArrayList クラスJava の Vector クラス

ホームページ 目次 演習解答例目次 付録目次 索引