ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

STL vector

vectorは動的な配列。配列の要素を増やしていったとき、自動的に配列のメモリを増加してくれる。
メンバ関数で自分がとくに使うであろうものは次のとおり。

push_back() 末尾に要素を追加
pop_back() 最後の要素を削除
size() 要素数を返す
begin() 最初の要素への反復子を返す
end() 最後の要素の次の位置(末尾)への反復子を返す
insert() 指定した位置へ挿入
erase() 指定した位置から削除
clear() すべての要素を削除

反復子というのはポインタのような動作をするオブジェクト。
またvectorでは配列と同じように[]で要素にアクセスできる。

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> v;

    // 10個要素を追加
    for(int i=0; i<10; i++) v.push_back(i);

    // 要素を表示
    for(int i=0; i<v.size(); i++) cout << v[i] << " ";
    cout << endl;

    // 5個要素をとりのぞく
    for(int i=0; i<5; i++) v.pop_back();

    // iteratorで要素表示
    vector<int>::iterator p = v.begin();
    while( p != v.end() )
    {
        cout << *p << " ";
        p++;
    }
    cout << endl;

    // 指定した位置に挿入
    p = v.begin();
    p += 2;
    v.insert( p, 5, 100 );

    for(int i=0; i<v.size(); i++) cout << v[i] << " ";
    cout << endl;

    // 指定した位置から削除
    p = v.begin();
    p += 2;
    v.erase( p, p+5 );

    for(int i=0; i<v.size(); i++) cout << v[i] << " ";
    cout << endl;

    // すべて削除
    v.clear();

    cout << v.size() << endl;
}

実行結果
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4
0 1 100 100 100 100 100 2 3 4
0 1 2 3 4
0