vectorとsetとmapと

vector,set,mapをよく間違えるのでメモ.

 

vector

配列っぽいもの
だいたいの関数はstringでも使えるので記憶力をあまり使わないで済むことに気付いた

  • 追加:vector.push_back(src);
  • 先頭参照:vector.front();
    begin()はイテレーターを返却するが,front()は値を返却する
  • 末尾取出:vector.back();
    vector.end()-1;をしなくて済む(begin()に対するend()の非対称性が気になっていた人並み)
  • 末尾削除(取り出しではない):vector.pop_back();
  • 削除:vector.erase(itr);
    部分削除はvector.erase(開始itr, 終端itr);で第2引数は長さではないことに注意.

構造体型でソートするには演算子のオーバーロードが必要

//sort用に演算子をオーバーロード
bool operator<(const struct& right) const
{
    return hoge == right.hoge ? true : hoge < right.hoge;
}

 

set

追加したら即時,昇順にソートされる
multisetもある
追加:set.insert(src); 探索:イテレーター(ランダムアクセス不可)

 

map

keyとvalueを持つ(せいでsetと間違える)
追加:map[key]=value;(map[key]が存在しない場合)
探索:map.find(key);(valueから探すにはイテレーターしかない?)