向std :: deque迭代器添加值是否安全?

时间:2018-12-01 10:52:01

标签: c++ deque

std :: deque与std :: vector不同,在内存中并不总是连续的。

例如,这样做安全吗?

std::size_t pos;
//... compute pos ...
mydeque.erase(mydeque.begin(), mydeque.begin() + pos);

是否知道“ mydeque.begin()+ pos”在双端队列范围内?

我读到迭代器是“ RandomAccessIterator”,所以通常它是安全的,对吗?

2 个答案:

答案 0 :(得分:3)

是的,只要您在范围内(最高end()),这是安全的。这基本上是std::advance对随机访问迭代器所做的操作。

答案 1 :(得分:1)

将值 N 添加到迭代器时,您只需按 N 个步骤来推进迭代器。与数据如何存储在要迭代的集合中无关。