目的
私はC++でアルゴリズムの修行を行っており、使用したSTLを備忘録の意味も込めて簡単にまとめることにしました。
そのため本記事は随時アップデート予定です。
もし、読者の方で「これも知ってると便利だよ」「その理解は間違ってるよ」などのコメントがありましたら、教えていただけると幸いです。(使用目的によると思いますが。)
はじめに
STLとは
STL(Standard Template Library)とはC++で用意されている標準ライブラリのこと。テンプレートクラスやテンプレート関数から構成されており、以下のようなものがある。
- コンテナ(vectorなど)
- イテレータ
- アルゴリズム(sortなど)
STLの詳細に関してはChatGPTに聞いてみたので、【C++】ChatGPT3.5にSTL、イテレータ、コンテナについて聞いてみたを参照。
参考
STL
1. deque
double-ended-queueの略で「デック」と呼ぶ。vectorと同じ動的配列クラスで"先頭・末尾"への要素追加・削除もO(1)
と高速に行える。先頭・末尾の両方へアクセス可能なので「両端キュー」とも呼ばれる。
AtCoder 365 C - Loong Trackingで出題。
dequeとvectorの違い
違いは先頭要素への操作が可能かどうかである。
vectorはpush_back()
, pop_back
で配列の末尾に要素を追加・削除ができる。dequeは前述に加え、push_front()
, pop_front
を使用して先頭への操作可能である。
参考
pair
2つの型の値をひとまとめにして扱うことができる。0番目の要素をfirst
, 1番目の要素をsecond
でアクセス可能。初期化も可能。