競技プログラミング用 知識集積所

変数とデータ構造

最終更新:

sport_programming

- view
管理者のみ編集可


単純な変数系

最も代表的な整数型変数。

int型より大きな数を扱える整数型変数。

  • size_t型(A問題レベル)(必須ではない)
vector(未作成)string型などの添え字やデータサイズを扱うときに使う整数型変数。
.size()を取得するたびにint型変数に代入してから使うなら、知らなくても問題はない。

小数型変数。

文字型変数。

ブール型変数。
trueとfalseのみを扱う、よくフラグと言われるやつ。

  • auto型(B問題レベル)(必須ではない)
実際はauto型という型はない。
型を書くのが面倒な場合に、コンピューターに「これ型書かなくてもわかるでしょ?」と押し付けるための型。

複雑な変数系

文字列型変数。

2つの値の組を扱う変数。

pair型の3つ以上版。

データ構造系

動的配列。
変数を一列にずらっと並べたようなデータ構造。
多数の、または不特定個数のデータを扱う上で最も基本となる。

リスト。
「何番目」ではなく「何の前で何の後」を管理して一列に並べるデータ構造。

スタック。
資料を積み上げるようなイメージで、最後に新しいデータを付け足したり、最後のものを取り除いたりできる。

キュー、待ち行列。
お店の行列ようなイメージで、最後にデータを付け足したり、最初のものを取り除いたりできる。

デック、両端キュー。
stackとqueueを合わせたようなもの。
データの付け足しも削除も、最初でも最後でも可能。

優先度付きキュー、ヒープ。
持っているデータの中で最小(または最大)のものを常に取り出せるようにした構造。

セット、順序付き集合。
データを、重複なく、常にソートされた状態で保持する。
ソートしない版や、重複あり版もある。

マップ、連想配列。
vector(未作成)が「0番目、1番目、2番目、……」でデータを持つのに対し、mapは「53番目、72番目、104番目、……」みたいに飛び飛びなとこだけ持ったり、「apple番目、banana番目、……」みたいに数以外を使ったりできる。

自作系



その他




vector、list、stack、queue、deque、priority_queue、set、mapそれぞれについて、できることとできないこと、得意なことと苦手なことをまとめた情報。
C問題以降で実行時間を気にするときに必要な知識。

vectorの中身にvectorを入れるテクニックについてのまとめ。
ウィキ募集バナー