std :: unordered_set :: equal_rangeイテレータの質問

フラニアン

std::unordered_set::equal_range値のキーが等しいと比較されるセット内の値の範囲を記述するイテレータのペアを返します。与えられた:

auto iteratorFromEqualRange = someUnorderedSet.equal_range(key).first;
auto iteratoFromFind = someUnorderedSet.find(key);

規格によって次のことが保証されていますか?

++iteratorFromEqualRange == ++iteratorFromFind;

どちらもstd::unordered_set::iterator?で定義されているため 言い換えれば、別の実装では、反復しているものstd::unordered_setコンテキストに関する「隠された」情報保持できますか、それともこれはバケットインターフェイスのそれほど微妙な強制ではありませんか(実装オプションが制限されます)?

LegacyForwardIteratorの要件を考えるとこれは確かに保証であると思います。確認を求めているだけです(または、ある種のエスケープハッチを含むより良いニュース)

PW

のイテレータはForwardIteratorunordered_set(現在はLegacyForwardIteratorという名前)です。

C ++ 14標準(最終ドラフトn4140)は、フォワードイテレータに関して次のように述べています。

24.2.5フォワードイテレータ[forward.iterators]

1クラスまたはポインタ型Xは、次の場合にフォワードイテレータの要件を満たします
...
(1.5)—型のオブジェクトは、以下で説明するX マルチパス保証を提供します。
..。

3 2つの逆参照可能なイテレータabタイプXは、次の場合にマルチパス保証を提供します。

(3.1)—はをa == b意味し++a == ++b
(3.2)—Xはポインタ型または式(void)++X(a)*aあり、式と同等*aです。

この場合、(1.5)と(3.1)を組み合わせると++iteratorFromEqualRange == ++iteratorFromFind;、これらのイテレータの両方を逆参照できるという条件で、標準によって保証されます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

std :: unordered_setのnon-constfind()

分類Dev

std :: string_viewおよびstd :: stringのstd :: unordered_set

分類Dev

std :: unordered_set <char>からの効果的な構築std :: string

分類Dev

std :: unordered_setイテレータトラバーサルの複雑さ

分類Dev

boost :: range :: adapters :: transformed over std :: unordered_setの使用方法は?

分類Dev

std :: unordered_set参照による戻りタイプと値

分類Dev

`std :: unordered_set`の使用法を理解する

分類Dev

std :: setまたはstd :: unordered_setでの挿入順序の保持

分類Dev

std :: setの代わりにstd :: unordered_setを使用する場合

分類Dev

C ++:イテレータがあるstd :: unordered_setの要素を置き換えます

分類Dev

カスタム述語を使用したstd :: unordered_setの未定義の動作

分類Dev

エラー:「unordered_set」は「std」のメンバーではありません

分類Dev

std :: unordered_set :: load_factor、なぜdoubleではなくfloatなのですか?

分類Dev

std :: unordered_setをどのようにstatic_castしますか?

分類Dev

std :: unordered_setをどのようにstatic_castしますか?

分類Dev

std :: unordered_set operator ==()N ^ 2の複雑さはなぜですか?

分類Dev

<unordered_set>のバグ?

分類Dev

std :: setおよびstd :: unordered_setは、emplace()を使用して要素をどのように構成しますか?

分類Dev

Inserting multiple not-a-numbers into a std::unordered_set<double>

分類Dev

non-const find() in std::unordered_set

分類Dev

Undefined behavior in std::unordered_set with custom predicate

分類Dev

std :: unordered_set <std :: unique_ptr>(C ++ 20)でポインタT *を見つけます

分類Dev

std :: unordered_setのコンテンツをstd :: vectorに効率的に移動する

分類Dev

std :: unordered_set :: findとstd :: findの奇妙なパフォーマンスの違い

分類Dev

unordered_mapとunordered_setの比較

分類Dev

std :: unordered_setがCComBSTRタイプをキーとして受け取らないのはなぜですか?

分類Dev

C ++ 11-変数を任意のstdコンテナ(vector、list、set、unordered_set)に配置する

分類Dev

std :: unordered_setのカスタムキー等価述語を定義する方法は?

分類Dev

std :: unordered_set :: reservedの役割はコンテナのメモリ要件のために予約しますか?

Related 関連記事

  1. 1

    std :: unordered_setのnon-constfind()

  2. 2

    std :: string_viewおよびstd :: stringのstd :: unordered_set

  3. 3

    std :: unordered_set <char>からの効果的な構築std :: string

  4. 4

    std :: unordered_setイテレータトラバーサルの複雑さ

  5. 5

    boost :: range :: adapters :: transformed over std :: unordered_setの使用方法は?

  6. 6

    std :: unordered_set参照による戻りタイプと値

  7. 7

    `std :: unordered_set`の使用法を理解する

  8. 8

    std :: setまたはstd :: unordered_setでの挿入順序の保持

  9. 9

    std :: setの代わりにstd :: unordered_setを使用する場合

  10. 10

    C ++:イテレータがあるstd :: unordered_setの要素を置き換えます

  11. 11

    カスタム述語を使用したstd :: unordered_setの未定義の動作

  12. 12

    エラー:「unordered_set」は「std」のメンバーではありません

  13. 13

    std :: unordered_set :: load_factor、なぜdoubleではなくfloatなのですか?

  14. 14

    std :: unordered_setをどのようにstatic_castしますか?

  15. 15

    std :: unordered_setをどのようにstatic_castしますか?

  16. 16

    std :: unordered_set operator ==()N ^ 2の複雑さはなぜですか?

  17. 17

    <unordered_set>のバグ?

  18. 18

    std :: setおよびstd :: unordered_setは、emplace()を使用して要素をどのように構成しますか?

  19. 19

    Inserting multiple not-a-numbers into a std::unordered_set<double>

  20. 20

    non-const find() in std::unordered_set

  21. 21

    Undefined behavior in std::unordered_set with custom predicate

  22. 22

    std :: unordered_set <std :: unique_ptr>(C ++ 20)でポインタT *を見つけます

  23. 23

    std :: unordered_setのコンテンツをstd :: vectorに効率的に移動する

  24. 24

    std :: unordered_set :: findとstd :: findの奇妙なパフォーマンスの違い

  25. 25

    unordered_mapとunordered_setの比較

  26. 26

    std :: unordered_setがCComBSTRタイプをキーとして受け取らないのはなぜですか?

  27. 27

    C ++ 11-変数を任意のstdコンテナ(vector、list、set、unordered_set)に配置する

  28. 28

    std :: unordered_setのカスタムキー等価述語を定義する方法は?

  29. 29

    std :: unordered_set :: reservedの役割はコンテナのメモリ要件のために予約しますか?

ホットタグ

アーカイブ