基于索引的C ++列表访问

etn*_*n03 1 c++

由于多种原因,我需要使用C ++列表(而不是向量),但需要对元素进行基于索引的访问。

我想到了这样的东西:

point* point1i = std::next(listPoints.begin(), i);
point* point2i = std::next(listPoints.begin(), i + 1);
Run Code Online (Sandbox Code Playgroud)

其中在point其他地方声明的类i是整数。

但是当我编译的时候我得到这个错误:

error: cannot convert ‘std::_List_iterator<point*>’ to ‘point*’ in initialization
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

谢谢!

Que*_*tin 6

listPoints.begin()std::next处理迭代器。由于您似乎有一个std::list<point *>并且需要该元素,因此只需取消引用迭代器即可:

point* point1i = *std::next(listPoints.begin(), i);
point* point2i = *std::next(listPoints.begin(), i + 1);
Run Code Online (Sandbox Code Playgroud)