タグ

ブックマーク / vivi.dyndns.org (2)

  • C++ 両端キュー std::deque 入門

    両端キュー std::deque とは deque は double-ended-queue の略で「デック」と発音される。 deque は vector と同じ動的配列クラスで、末尾だけでなく先頭への要素追加・削除も O(1) と高速なクラスだぞ。 先頭への要素追加・削除もOKなので「両端キュー」とも呼ばれる。 用意されているメンバ関数も vector とほぼ同じで使い勝手もほぼ同じなので、先頭付近での挿入削除処理が多い場合は deque の使用を検討するといいぞ。 ただし、vector と違い、deque の要素は連続したアドレスに保存されているとは限らないので、要素のアドレスを取り出して、 それをポインタとして他の関数に渡すと問題が発生することがあるので、要注意だ。 また、先頭付近での挿入削除以外は、vector の方がパフォーマンスに優れるので、先頭付近での挿入削除を頻繁に行わない

    iww
    iww 2016/02/05
    max_size() は
  • イテレータを実装しよう

    イテレータ(iterator)は C++ STL(Standard Template Library)の中核を成す概念のひとつで、ポインタの機能を抽象化したものである。 参照外し(dereference)、インクリメント・デクリメント、比較などのポインタ同等の機能を持つ。 STLの各コンテナには、それ専用のイテレータクラスが定義されており、 イテレータオブジェクトの生成はコンテナの begin(), end() メソッドなどで行う。 コンテナの最大要素を取得する例: vector<int> cntn; ..... // cntn にデータを格納する処理 int val = MIN_INT; for(vector<int>::iterator itr = cntn.begin(); itr != cntn.end(); ++itr) val = max(val, *itr); イテレータは、

  • 1