Vector

container-vector.png

まとめ

用途 C++ Java
要素数を返す size() size()
要素へのアクセス v[i],v.at(i) v.get(i)

概要

Vectorはあらかじめサイズのわかっていない配列を使いたいときに使用する可変長配列である。

初期化

vector<int> books(1000);
vector<int> books[1000];//こっちはエラーになる
int inits[]={1,2,3,4,5};
vector<int> p(inits,inits+6);
vector<int> p(inits,init+ sizeof(inits) / sizeof(inits[0]);    //これで最強

いざ、確保すべきサイズがわかったとき

newの代わりは、resize()である。
resize(n)はn個分サイズを拡張する、という意味

vector<int> v;
v.resize(1000);

resize(n)したら、n個分のデータは0で初期化される。

要素を1個ずつ増やしたいとき

v[5]=1;

という感じで要素を入れたらエラーになるが、push_back()して要素を増やし続けるのはok
いちいち、resizeしてくれてるのかね。

先頭のポインタが欲しいとき

は、data()を使えばいい。

fread(vector.data(),sizeof(unsigned char),count,fp);

要素を参照したいとき

vector<int> v(10);
int val=v[1];//このように普通の配列っぽくアクセスできるのが便利。
v.at(1);//これでも同じ

代入(コピーしたいとき)

組み込み型でも、ユーザ定義型でもこれでいけた。

vector<int> src,dst;
dst=src;//これでok

vectorオブジェクト同志の代入は許可されている[3]

algorithmcopy関数を使う?copy関数内部ではループが使われているらしい。
effective-stlによると範囲形式のinsertがお勧めらしい。

後始末


sequence-container vector

サポートサイト Wikidot.com sequence-containervector