首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STL矢量化地图-寻找最佳实践

STL矢量化地图-寻找最佳实践
EN

Stack Overflow用户
提问于 2013-03-03 21:53:03
回答 2查看 278关注 0票数 0

我对STL不太有经验,所以我不确定这里最好的方法。

我有一组操作,每个操作都绑定到一个唯一的ID上。为了确保不重复这些操作,我最初想将它们存储在std::map中,按ID键键。但是,我需要保留严格的内部命令,以便在我解除操作时,它们以相反的顺序被添加。

任何给定的操作列表都可以是从一个或两个项目到几千个。如果我切换到手动检查一个vector的副本(即,迭代遍历和checikng ),我会失去什么吗?或者,是否有某种形式的map或其他容器可以让我按ID查找,但不会在内部排序或重新排序我的元素?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-03 21:55:30

您可能需要使用索引映射,它可以支持映射的插入顺序。

代码语言:javascript
复制
struct Item 
{
      string name;
      int data;
};
struct ItemTag {};
typedef multi_index_container<
    Item,
    indexed_by<
        random_access<>, // this index represents insertion order
        hashed_unique< tag<ItemTag>, member<Item, string, &Item::name> >
    >
> ItemsMap;
票数 2
EN

Stack Overflow用户

发布于 2013-03-03 21:56:25

听起来你需要Boost.MultiIndex

Boost多索引容器库提供了一个名为multi_index_container的类模板,它允许构造具有不同排序和访问语义的一个或多个索引的容器。索引提供了类似于STL容器的接口,使使用它们变得熟悉。对同一组元素进行多索引的概念是从关系数据库术语中借用的,并允许在简单集和映射不够的情况下,本着多重索引关系表的精神规范复杂的数据结构。根据类似的STL容器,如std::set、std::list和散列,提供了广泛的索引选择。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15191337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档