【发布时间】:2012-04-20 10:09:19
【问题描述】:
我需要一个容器,其中:
- 当我添加一个尚不存在的新元素时,它被添加到列表顶部
- 当我添加一个已经存在的元素时,它没有被添加,我在列表中获得了它的索引
- 一旦元素被插入,它总是有相同的索引并且可以使用这个索引来访问它
单独std::set 是不够的,因为我无法使用[index] 访问元素。 std::list 也不是,因为它不存储唯一的元素。
我使用了list 和map 的混合解决方案,但也许有一些标准的通用模板?
我不想使用 boost。每次插入后调用list::unique 是没有办法的。
【问题讨论】:
-
自己滚动怎么样?你有没有尝试过?听起来像是对
list的一个非常薄的包装... -
@Soohjun:用
list来实现这个并不好;初始碰撞检测将是 O(n),按索引查找也是如此。 -
列出和地图,如果您经常添加现有元素。
-
我知道你不想使用 Boost,但这实际上是 Boost.bimap 所做的!
-
@user1158692:实际上有 2 个键(元素本身,以及为其分配的相关整数索引)。
标签: c++ collections