您好,我无法让它工作。我有4个成员的结构,我创建了列表和迭代器:
std::list<structure> one;
std::list<structure>::iterator two;
现在我想访问element:
one.end-1;
two = one.end()-1;
它不起作用&gt;。&gt; Compilator会抛出14个错误。
错误如下:
所有这些都是这样的:
Glowne.cpp(105):错误C2784: “reverse_iterator的&LT; _RanIt&GT; :: difference_type std :: operator - (const 的std :: reverse_iterator的&LT; _RanIt&GT; &安培;,const的 的std :: reverse_iterator的&LT; _RanIt2&GT; &amp;)': 无法推断出模板参数 'const std :: reverse_iterator&lt; _RanIt&gt; &安培;”从 '的std ::列表&LT; _Ty&GT; :: _迭代&LT; _Secure_validation&GT;' 用[_Ty = Klient, _Secure_validation = true]
一切都很好,谢谢你提到回来的方法,真的是你们很棒。
答案 0 :(得分:6)
双向迭代器(由std::list
使用)不支持“指针算术”,只有一步:
two = one.end();
--two;
此外,声明one.end-1;
完全没有效果,我会摆脱它。
答案 1 :(得分:4)
如果您想要列表的最后一个元素,请使用back()
成员。
答案 2 :(得分:1)
List不是随机访问容器,这意味着您不能对其迭代器使用算术运算。
要遍历列表,您可以使用运算符++
和--
将迭代器移动一个元素。
如果你想移动到任意位置,请使用其他东西,例如std :: vector。
大多数容器都有front()
和back()
方法,用于访问第一个和最后一个元素。