【发布时间】:2016-07-10 19:29:56
【问题描述】:
我必须处理双端队列中的元素(从第一个到最后一个),但在每次迭代时,我都需要使用一个元素和下一个元素。所以我正在尝试编写一个以 mydeque.begin() 开始并在 mydeque[mydeque.size()-1] 结束的 for 循环。还;我想知道我的迭代器 deque::iterator 是否有下一个方法 (it->next()) 来进行像 *it - *it->next() 这样的操作。非常感谢。
【问题讨论】:
-
为什么不简单地使用索引而不是迭代器呢?这应该使循环变得微不足道。
-
next(it)返回 C++11 中的下一个迭代器。 -
如果你必须使用迭代器,那么
std::deque有random access iterator 这意味着你可以做例如iter != std::end(the_deque) - 1和*(iter + 1)(还有iter[1])和iter += 2。 -
顺便问一下,双端队列保证有偶数个值吗?里面可能有奇数个值吗? s1h给出的答案的正确性很大程度上取决于此。
-
实际上 iter += 2 不会这样做,因为我使用了当前元素和下一个元素。在第一次迭代中,我使用元素 1 和 2,在第二次迭代中使用元素 2 和 3,依此类推。感谢您的评论