我必须从deque(从头到尾)处理元素,但是在每个iteraton我需要使用一个元素,然后是下一个元素。所以我试着写一个以mydeque.begin()开头的for循环,并在mydeque [mydeque.size() - 1]结束。也;我想知道我的迭代器deque :: iterator是否有下一个方法(it-> next()),以便进行像* it - * it-> next()这样的操作。非常感谢你。
答案 0 :(得分:0)
编辑:我的初步解决方案确实有点容易出错且不准确。
这可以使用迭代器轻松完成,请参阅以下小例子:
#include <deque>
#include <iostream>
int main() {
std::deque<int> test = {1,2,3,4,5,6,7};
for(auto i = test.begin(); i != test.end(); ++i) {
auto next = std::next(i);
if(next != test.end()) {
std::cout << *i << " " << *next << std::endl;
}
}
}
你可以简单地将迭代器增加2并使用std::next来选择以下项目(因为std :: next的偏移默认为1)。
答案 1 :(得分:0)
以下是:
#include <deque>
#include <iostream>
int main() {
std::deque<int> test = {1,2,3,4,5,6,7,8};
for(auto i = test.begin(); i != test.end(); i++) {
auto next = std::next(i);
std::cout << *i << *next << std::endl;
if(next==test.end())
{
//Do something. This is the last element.
break;
}
}
}
编辑:注意只有一个元素的deques。通过执行if(test.begin()==test.end())
等检查来执行此操作。