由于多种原因,我需要使用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)
我在这里做错了什么?
谢谢!
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)