C++ STL列表和迭代器
你好,我就是没法用。我有一个包含4个成员的结构,我创建了列表和迭代器: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_迭代器&)': 无法推断的模板参数
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;