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 は空です