什么样的迭代器支持随机访问但不支持C ++中的连续存储?

时间:2016-10-19 10:07:01

标签: c++11 iterator categories contiguous

我看到自C ++ 17以来有一个新的迭代器,下面是cppreference中的截图。我很困惑。什么样的迭代器是随机访问而不是C ++中的连续存储?否则,ContiguousIterator不比RandomAccessIterator强大?正确?

enter image description here

然后是链接here

1 个答案:

答案 0 :(得分:2)

一个具有随机访问迭代器的非连续容器是std::deque。引用cppreference网站:

  

std::vector相反,双端队列的元素不是连续存储的:典型的实现使用一系列单独分配的固定大小的数组。

     

deques的常见操作的复杂性(效率)如下:

     
      
  • 随机访问 - 常量 O(1)
  •   
  • 在结尾或开头插入或删除元素 - 常量 O(1)
  •   
  • 插入或移除元素 - 线性 O(n)
  •