gpt4 book ai didi

c++ - 具有 std::vector 和 std::set 属性的容器?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:39 24 4
gpt4 key购买 nike

C++ 世界中是否存在具有这些属性的容器?

  • 元素是独一无二的,并在可定制比较器的帮助下有序
  • 提供随机接入运营商。

我目前正在将我的数据收集到 std::set<C,COMPARATOR> 中然后做一个std::copy(_set.begin(),_set.end(),std::back_inserter(_vec))能够随机访问有序集合。然而,规模可能会达到数亿。

最佳答案

如果可以选择 Boost,请查看 flat_set in the Containers library .

flat_set 的接口(interface)与 std::set 相同但它提供随机访问迭代器,如 std::vector :

#include <boost/container/flat_set.hpp>

[...]

boost::container::flat_set<int> c;
c.insert(1);
c.insert(2);
c.insert(3);
c.insert(4);

// unfortunately, no operator[] on the container itself,
// but the iterator is random access
int third_element = c.begin()[2];

如果你被标准库困住了,你可以使用一个排序的 vector以此目的。标准库实际上在 <algorithm> 中提供了很多算法。标题允许你做几乎所有你可以用 set 做的事情带有排序的迭代器范围。

关于c++ - 具有 std::vector 和 std::set 属性的容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27947798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com