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

is it safe to add a value to a std::deque iterator

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

这样做安全吗,例如:

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

知道 "mydeque.begin() + pos" 在双端队列范围内 ?

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

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

当您将值 N 添加到迭代器时,您只是将迭代器推进 N 步。它与数据如何存储在被迭代的集合中无关。