首页 > 后端开发 > C++ > 如何维护 std::map 中的插入顺序,尤其是元素数量有限的情况?

如何维护 std::map 中的插入顺序,尤其是元素数量有限的情况?

DDD
发布: 2024-12-07 13:29:14
原创
275 人浏览过

How Can I Maintain Insertion Order in a std::map, Especially with a Limited Number of Elements?

具有插入顺序的 std::Map

当元素顺序很重要时,跟踪 std::map 中的插入顺序至关重要。虽然 std::map 主要根据键值对元素进行排序,但有两种可能的解决方案可以满足您的要求:

解决方案 1:使用 std::Vector

尽管您提到由于频繁查找和增量而使用 std::vector 时对性能的担忧,std::vector 与自定义比较器相结合可以维持插入顺序。但需要注意的是,如果元素数量显着增加,这种方法确实可能会带来性能缺陷。

解决方案 2:Boost::Multi-Index

对于元素数量有限 (50) 的特定场景,Boost 多索引库提供了强大的解决方案。它允许创建具有多个索引的容器。在您的情况下,以下代码片段演示了如何定义一个跟踪插入顺序和唯一字符串标识符的多索引容器:

struct value_t {
  string s;
  int    i;
};

struct string_tag {};

typedef multi_index_container<
    value_t,
    indexed_by<
        random_access<>, // this index represents insertion order
        hashed_unique<tag<string_tag>, member<value_t, string, &value_t::s>>
    >
> values_t;
登录后复制

此多索引容器可以根据字符串标识符进行高效查找,同时通过“random_access”索引保留插入顺序。

以上是如何维护 std::map 中的插入顺序,尤其是元素数量有限的情况?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板