【问题标题】:equal_range c++ element orderequal_range c++ 元素顺序
【发布时间】:2016-09-11 10:08:29
【问题描述】:

我在 C++ 中使用 multimap 的相等范围。在我的情况下,同一个键可以有多个条目 - 因此是多映射。我想知道返回的迭代器是否会按定义的顺序交付项目,还是留给 STL 的实现者。例如,我将在多重映射中插入键 A B C D E F C X Y Z C M N A 等。 并且想知道迭代器将以什么顺序返回给我的连接键。它们被插入的顺序是什么?最后插入第一个?没有定义的? 我尽量避免为了知道订单而存储额外的信息。就我而言,它是纯 C++,甚至不是 C++11。谢谢,维克多

【问题讨论】:

    标签: c++ stl multimap


    【解决方案1】:

    重复的键将插入现有键之后,因此元素的顺序将保持不变(请参阅语言规范中的“关联容器”)。

    【讨论】:

    • 嗨 1201ProgramAlarm,谢谢。也许我是盲人,但在哪里
    • 我正在查看 N3690(第 23 章?),但找不到任何相关内容。我知道多地图实现不使用 RB 树或 AVL 树。我的理解是,multimap 中的所有存储/查找/迭代都是基于提供的“less”功能,这就是为什么我对给定答案感到困惑的原因。我的问题是 - 迭代器 equal_range 元素是否有保证的顺序(所有实现都应该遵守),因为它们都具有相同的值。对不起,如果我错过了你的观点。问候,维克多
    • @user612514 在 N4527 第 23.2.4 节 [associative.reqmts] 表 101 中,a_eq.emplacea_eq.insert 的描述。 (这是 N3242 中的表 102;我没有 N3690)。
    • 再次非常感谢您指出规则的准确位置。我想只是因为我错过了这些材料的数量。问候,维克多
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 2011-02-07
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多