yokobuttonの不定期で競技プログラミングをするブログ

不定期で解けた競技プログラミングコンテストの問題を載せています。

c++のコンテナと主要な関数

vector:動的な配列。
 size():要素の実際の数を返す。
 empty():空であるかどうかを返す。
 push_back(elem):elemのコピーを末尾に追加する。
 pop_back():最後の要素を削除する。
 back():最後の要素を返す。
 front():最初の要素を返す。

deque:両端が開いている動的な配列。先頭と末尾の両方で挿入や削除を高速に実行できる。
 size():要素の実際の数を返す。
 empty():空であるかどうかを返す。
 push_back(elem):elemのコピーを末尾に追加する。
 pop_back():最後の要素を削除する。
 back():最後の要素を返す。
 push_front(elem):elemのコピーを先頭に追加する。
 pop_front():最初の要素を削除する。
 front():最初の要素を返す。

list:双方向リンクリスト。要素の挿入と削除がどの位置でも高速に行われる。
 size():要素の実際の数を返す。
 empty():空であるかどうかを返す。
 insert(pos,elem):posの反復子が指す位置にelemのコピーを挿入し、新しい要素の位置を返す。
 push_back(elem):elemのコピーを末尾に追加する。
 pop_back():最後の要素を削除する。
 back():最後の要素を返す。
 push_front(elem):elemのコピーを先頭に追加する。
 pop_front():最初の要素を削除する。
 front():最初の要素を返す。
 remove(val):valという値を持つすべての要素を削除する。
 remove_if(op):op(elem)が真であるすべての要素を削除する。

forward_list:単方向リンクリスト。
 size():要素の実際の数を返す。
 empty():空であるかどうかを返す。
 insert_after(pos,elem):posの後方にelemのコピーを追加する。
 push_front(elem):elemのコピーを先頭に追加する。
 pop_front():最初の要素を削除する。
 erase_after(pos):posの後方を削除する。

set,multiset:特定のソートの基準(デフォルトではless<>)に従って要素を自動的にソートする。multisetは重複を許し、setは許さない。
 size():要素の実際の数を返す。
 empty():空であるかどうかを返す。
 count(elem):elemという値を持つ要素の数を返す。
 finf(elem):elemという値を持つ最初の要素の位置、またはend()を返す。
 lower_bound(elem):elemを挿入できる最初の位置を返す(elem以上の最初の要素の位置)。
 upper_bound(elem):elemを挿入できる最後の位置を返す(elemより大きい最初の要素の位置)。
 insert(elem):elemのコピーを挿入し、新しい要素の位置を返す。setの場合、成功したかどうかも返す。
 erase(elem):elemという値を持つ要素をすべて削除し、削除した要素の数を返す。

map,multimap:キーと値のペアを要素として管理する。要素はキーに対して使用されるソートの基準に従って自動的にソートされる。multimapは重複を許し、mapは許さない。
 size():要素の実際の数を返す。
 empty():空であるかどうかを返す。
 count(key):keyというキーを持つ要素の数を返す。
 find(key):keyというキーを持つ最初の要素の位置、またはend()を返す。
 lower_bound(key):keyというキーを持つ要素を挿入できる最初の位置を返す(key以上のキーを持つ最初の要素の位置)。
 upper_bound(key):keyというキーを持つ要素を挿入できる最後の位置を返す(keyより大きいキーを持つ最初の要素の位置)。
 insert(elem):elemのコピーを挿入し、新しい要素の位置を返す。mapの場合、成功したかどうかも返す。
 erase(elem):elemの値を持つ要素をすべて削除し、削除した要素の数を返す。
 
unordered_set,unordered_multiset:ハッシュテーブルで実装されている。
 size():要素の実際の数を返す。
 empty():空であるかどうかを返す。
 find(elem):keyというキーを持つ最初の要素の位置、またはend()を返す。
 insert(elem):elemのコピーを挿入し、新しい要素の位置を返す。
 erase(elem):elemの値を持つ要素をすべて削除し、削除した要素の数を返す。

unordered_map,unordered_multimap:キーと値のペアを要素として管理する。ハッシュテーブルで実装されている。
 size():要素の実際の数を返す。
 empty():空であるかどうかを返す。
 find(key):keyというキーを持つ最初の要素の位置、またはend()を返す。
 insert(elem):elemのコピーを挿入し、新しい要素の位置を返す。
 erase(elem):elemの値を持つ要素をすべて削除し、削除した要素の数を返す。

stack:スタック(LIFO)を実装する。
 empty():スタックが空であるかどうかを返す。
 push(elem):elemをスタックに挿入する。
 top():スタックの次の要素を返す。
 pop():スタックから要素を1つ削除する。

queue:キュー(FIFO)を実装する。
 empty():キューが空であるかどうかを返す。
 push(elem):elemをキューに挿入する。
 front():キューの次の要素を返す。
 back():キューの最後の要素を返す。
 pop():キューから要素を1つ削除する。

priority_queue:優先度に従って要素を読むことができるキューを実装する。
 empty():キューが空であるかどうかを返す。
 push(elem):elemをキューに挿入する。
 top():キューの次の要素を返す。
 pop():キューから要素を1つ削除する。