std :: deque与std :: vector不同,在内存中并不总是连续的。
例如,这样做安全吗?
std::size_t pos;
//... compute pos ...
mydeque.erase(mydeque.begin(), mydeque.begin() + pos);
是否知道“ mydeque.begin()+ pos”在双端队列范围内?
我读到迭代器是“ RandomAccessIterator”,所以通常它是安全的,对吗?
答案 0 :(得分:3)
是的,只要您在范围内(最高end()
),这是安全的。这基本上是std::advance
对随机访问迭代器所做的操作。
答案 1 :(得分:1)
将值 N 添加到迭代器时,您只需按 N 个步骤来推进迭代器。与数据如何存储在要迭代的集合中无关。