c++ - 为什么 unordered_set 不提供数组访问运算符

标签 c++ stl unordered-set

我很好奇为什么 STL 容器 unordered_set 平均具有恒定的随机访问时间复杂度,却没有提供一种方法来访问距离第一个元素一定距离的元素容器。例如:

T& unordered_set::operator[](size_t index)
{
    return *(begin() + index);
}

最佳答案

“按一定距离”访问元素意味着有一些有意义的方法来测量该距离。 std::unordered_set 的问题在于,好吧,无序。因此,没有任何有意义的方式来以非任意的方式解释“距开始有一段距离”。

如果要按距离访问,将数据复制到一个vector中:

std::vector tmp(unordered.begin(), unordered.end());

关于c++ - 为什么 unordered_set 不提供数组访问运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29552086/

相关文章:

c++ - 一个单独的循环减慢了一个独立的早期循环?

c++ - 检查值是否在集合 p1 和 p2 中但不在 p3 中

c++ - 从 std::map 选择最接近的 RGB 颜色

c++ - 如何在 gcc v4.1.2 中获取 unordered_set 的 header ?

c++ - C++ 中 100 位数字的平方根

c++ - 使用 CUDA 调试时的 CUDA 堆栈大小

c++ - 为什么在 C++11 中使用非成员开始和结束函数?

C++ std::unordered_set SIGFPE 异常

c++ - 无序关联容器什么时候发生重新散列?

c++ - 我面对这个 : invalid types `double[int]' for array subscript in my program