【发布时间】:2018-04-13 09:54:38
【问题描述】:
我正在尝试获取 std::list 中连续元素之间的差异。我尝试了以下解决方案,但正如this 线程所说,我需要制作迭代器的副本并增加它。不确定这是什么意思,因为向迭代器添加数字也会导致错误。我在这里想念什么。我使用的是以前版本的 C++,但不是 C++ 11
#include "stdafx.h"
#include <list>
#include <iostream>
using namespace std;
int main()
{
std::list<int> myList;
//for (int i = 10;i < 15;i++)
myList.push_back(12);
myList.push_back(15);
myList.push_back(18);
myList.push_back(19);
myList.push_back(25);
for (std::list<int>::const_iterator itr = myList.begin();itr != myList.end();++itr)
{
int x = *itr;
int y = *(itr + 1);
int diff = std::abs(x - y);
cout << diff << "\n";
}
return 0;
}
【问题讨论】:
-
添加到迭代器需要random access iterator。
std::list不提供这种迭代器。相反,它只是一个Bidirectional Iterator。还要注意最后一个元素。