検索

Google
Web www.icefree.org

RSS of recent changes

 

Vectorの使い方

2017-06-20 (火) 23:23:54 (2495d)

整理中

 このページはTopCoder?のC++選択者が使うSTLをメモしたものです。
 通常のSTLの使い方とは異なることがあるので注意が必要です。その違いは、TopCoder?で求められる第一のものがコーディング速度だということによります。

vector

operator[]

[pos]

at

at(pos)

assign

assign(count, val)
assign(first, last)

 一度内容をすべて消してから、新しいデータを格納します。

clear

clear()

erase

erase(where)
erase(first, last)

 どちらもイテレータで指定します。インデックスで消したいときは、
erase(begin() + pos)
で消せます。

begin

begin()

end

end()

push_back

push_back(val)

pop_back

pop_back()

size

size()

insert

insert(where,val)
insert(where,count,val)
insert(where,first,last)

 挿入はメモリの大移動が起こるので、あまり使われません。
 whereで指定された場所に新しいデータが入ります。whereで指定された場所にあったデータは後ろに移ります。

back,capacity,front,get_allocator,max_size,rbegin,rend,resize,reserve,swap
 使用頻度が低いので省略

algorithm

vectorと一緒によく使われるもの。

find(first,last,val)

sort(first,last)
 ソート系にはpartial_sort,stable_sortもありますが、使う機会はほとんどありません。でも、stable_sortでないと同じものの順序が保存されないことは知っておく必要があります。最大と最小だけが必要なことは多いかもしれませんが、それはmax_element,min_elementで済みます。

max_element(first,last)
min_element(first,last)
 イテレータを返すので、値が必要なら*max_element(...)。

unique(first,last)
remove(first,last,val)
 unique,removeは並び替えだけで削除を行わないので、eraseと一緒に使うことが多いです。

ソートして重複を削除する

sort(vec.begin(), vec.end())
vec.erase(unique(vec.begin(), vec.end()), vec.end());

特定の値を持つ要素の消去

vec.erase(remove(vec.begin(), vec.end(), val), vel.end());
Counter: 2113, today: 1, yesterday: 0