可能重复:
一个跟踪插入顺序的std::映射?
我正在寻找一个STL容器,它可以保留插入顺序(无排序),但不允许重复。有吗?如果没有任何技巧我可以用来定制一个?
目前还没有这样的容器,但您可以通过将类中的std::vector
和std::set
放在一起以廉价的方式创建自己的容器。
我知道您特别要求使用STL容器,但是boost已经提供了一个多索引容器,它可以通过其ordered_unique索引实现您想要的功能。我绝对值得一看,而不是重新发明轮子。
我只是想指出一个好的替代方案。
祝你好运。
无需重新发明轮子,可以考虑使用boost::multi_index
容器。然后,你可以随心所欲地定义各种索引。性能差异(如果您担心的话)应该是最小的。
没有。在不进行排序或散列的情况下检测重复项是一项非常昂贵的操作。