向 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 步。它与数据如何存储在被迭代的集合中无关。
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 步。它与数据如何存储在被迭代的集合中无关。