【发布时间】:2015-01-14 16:29:45
【问题描述】:
C++ 世界中是否存在具有这些属性的容器?
- 元素是独一无二的,并在可自定义的比较器的帮助下排序
- 提供随机访问运算符。
我目前正在将我的数据收集到 std::set<C,COMPARATOR> 中,然后执行 std::copy(_set.begin(),_set.end(),std::back_inserter(_vec)) 以便能够随机访问有序集合。然而,规模可能会达到数亿。
【问题讨论】:
-
堆会有帮助吗?您不会有总排序,但可以选择最大元素。
-
@Quentin 没有严格的顺序是必要的
-
您是否要在数据中间进行大量插入和/或删除?这将对可接受的解决方案产生重大影响。您当前的解决方案可以通过直接添加到向量并在其上运行
std::sort来改进,总体上应该会稍微快一些。 -
@MarkRansom 对向量进行排序的问题在于它不能保证唯一性。如果我遍历数据,我希望相同键的双重插入被静默忽略。
-
@Oncaphillis 如果你只有比较少的重复,你可以在
std::sort之后使用std::unique。顺便说一句,说您的情况涉及首先一劳永逸地构建数据结构,然后再读取它是正确的吗?
标签: c++ c++11 containers