メモ:競プロで使う C++

競プロで使う C++STL の雑多なメモ

  • コンテナの要素数 n とする
  • コンテナ名は d とする

std::set (#include <set>

動的集合で要素の検索,削除,挿入が  O(\log n) 時間でできるコンテナ

d.lower_bound(x) O(\log n) 時間
   x 以上となる最初の要素を指すイテレータを返す.存在しない場合は end を返す.

d.upper_bound(x) O(\log n) 時間
   x より大きい最初の要素を指すイテレータを返す.存在しない場合は end を返す.

d.erase(x) O(\log n) 時間
  要素  x を削除する.

d.erase(iter) O(1) 時間
  イテレータ iter が指す要素を削除する(注意.正しくないイテレータの場合はエラー).

d.erase(first, end) O(D \log n) 時間( D区間の要素数
  イテレータ [first, end) が指す要素を削除する.

std::tuple (#include <tuple>

 N 個組を表現するコンテナ(2個組 std::pair の拡張)

  • 型は異なっていても大丈夫(e.g. tuple<int, double, string, std::vector<char>>
  • tuple の生成: std::make_tuple(arg1, arg2, ...)
  •  i 番目の要素への参照: std::get<i>(d) ( 0 \le i < N注意.  iコンパイル時定数)