std::set
/std::multiset
/std::map
/std::multimap
を反復処理する時間の複雑さはどれくらいですか?セット/マップのサイズは直線的だと思いますが、確かではありません。言語標準で指定されていますか?
ドラフトC++ 11標準N3337 で、答えは§24.2.1段落8にあります。
イテレータのすべてのカテゴリには、特定のカテゴリで一定時間(償却)で実現可能な関数のみが必要です。
イテレータの各操作は一定時間でなければならないため、n
要素の反復はO(n)
でなければなりません。
セット/マップのサイズは直線的だと思いますが、確かではありません。
それは正しいです。セットまたはマップ全体を反復処理するのはO(N)
です。