Java有一个LinkedHashSet,它是一个具有可预测迭代顺序的集合.C++中最接近的可用数据结构是什么?
目前我正在使用set和vector复制我的数据.我将数据插入到集合中.如果数据插入成功(意味着数据尚未出现在集合中),那么我将push_back插入向量.当我遍历数据时,我使用向量.
如果你可以使用它,那么带有和索引的Boost.MultiIndex与数据结构相同.sequencedhashed_uniqueLinkedHashSet
如果失败了,请保留一个unordered_set(或者hash_set,如果这是您的实现提供的)某种类型的列表节点,并使用该列表节点自己处理顺序.
您目前正在做的事情(set和vector)的问题是:
mutable被订单比较忽略的数据成员,并且有人编写希望通过查找进行变更的代码并查看更改时按顺序迭代).LinkedHashSet,没有快速的方法来删除序列中间的元素.如果要按值而不是按位置删除,则必须在向量中搜索要删除的值.set 具有与散列集不同的性能特征.如果你不关心任何这些事情,那么你所拥有的可能就好了.如果重复是唯一的问题,那么你可以考虑保留一组指向集合中元素的指针,而不是重复的向量.
| 归档时间: |
|
| 查看次数: |
5682 次 |
| 最近记录: |