C++ STL列表和迭代器

C++ STL列表和迭代器,c++,stl,iterator,C++,Stl,Iterator,你好,我就是没法用。我有一个包含4个成员的结构,我创建了列表和迭代器: std::list<structure> one; std::list<structure>::iterator two; 它不工作>>编译器抛出14个错误 错误如下: 它们都是这样的: Glowne.cpp(105):错误C2784: '反向迭代器::差异类型 std::运算符-(常量) std::reverse_迭代器&,const std::reverse_迭代器&)': 无法推断的模板参数

你好,我就是没法用。我有一个包含4个成员的结构,我创建了列表和迭代器:

std::list<structure> one;
std::list<structure>::iterator two;
它不工作>>编译器抛出14个错误

错误如下:

它们都是这样的:

Glowne.cpp(105):错误C2784: '反向迭代器::差异类型 std::运算符-(常量) std::reverse_迭代器&,const std::reverse_迭代器&)': 无法推断的模板参数 'const std::reverse_迭代器 &“从 'std::list::Iterator' 用[_Ty=Klient, _安全\u验证=真]

一切都很好,谢谢你提到back方法,真的很好。

双向迭代器(由
std::list使用)不支持“指针算法”,只支持单个步骤:

two = one.end();
--two;

另外,语句
one.end-1
完全没有任何效果,我会去掉它。

如果您想要列表的最后一个元素,请使用成员。

列表不是随机访问容器,这意味着您不能对其迭代器使用算术运算

要在列表中移动,可以使用运算符
++
-->
将迭代器移动一个元素。 如果您想移动到任意位置,请使用其他工具,例如std::vector

大多数容器都有
front()
back()
方法,用于访问第一个和最后一个元素

two = one.end();
--two;