web-dev-qa-db-ja.com

std :: set / std :: mapを反復処理する時間の複雑さはどれくらいですか?

std::set/std::multiset/std::map/std::multimapを反復処理する時間の複雑さはどれくらいですか?セット/マップのサイズは直線的だと思いますが、確かではありません。言語標準で指定されていますか?

24
updogliu

ドラフトC++ 11標準N3337 で、答えは§24.2.1段落8にあります。

イテレータのすべてのカテゴリには、特定のカテゴリで一定時間(償却)で実現可能な関数のみが必要です。

イテレータの各操作は一定時間でなければならないため、n要素の反復はO(n)でなければなりません。

48
Mark Ransom

セット/マップのサイズは直線的だと思いますが、確かではありません。

それは正しいです。セットまたはマップ全体を反復処理するのはO(N)です。

14
Chris Dargis