无法将 std::list 迭代器与 list::back()进行比较?
Can't compare std::list iterator to list::back()?
我有一个自定义迭代器模板类,用于封装std::list
迭代器。在我的hasNext()
方法中,我想检查迭代器是否引用了列表中的最后一项。然而,这个代码:
template< class Type >
...
virtual bool hasNext( void )
{
return itTypes != pList->back();
}
...
typename std::list< Type > * pList;
typename std::list< Type >::iterator itTypes;
产生错误:
error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'std::_List_iterator<_Mylist>'
如果我将itTypes
与list::begin()
或list::end()
进行比较,我没有问题。我看过的STL迭代器的文档说,std::list使用的双向迭代器支持等式和不等式比较运算符。那么,我不能与list::back()
相比有什么原因吗?
您需要end()
。back()
获取最后一个元素的值,该元素根本不是列表中的迭代器。
back()返回元素而不是迭代器。所以使用代码
return *itTypes != pList->back()
begin()
和end()
函数返回迭代器,而front()
和back()
返回元素引用
相关文章:
- 使用std::multimap迭代器创建std::list
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 为什么比较运算符如此快速
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- C++中带有List类的迭代器Segfault
- 使用"std::unordereded_map"映射到"std::list"对象
- 比较字符数组
- 将模板化的类型与C++中的某些类/类型进行比较
- GCC对可能有效的代码抛出init list生存期警告
- C++自定义比较函数
- 如何比较自定义类的std::变体
- 使用std::list创建循环链表
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- 如何修复<function-style-cast>错误:无法从'initializer list'转换为asdending比较<W>(模板函子)
- std::list::使用自定义比较器排序时出现分段故障
- 无法将 std::list 迭代器与 list::back()进行比较?
- c++中简单迭代list over map的性能比较
- std::list<myclass*>::迭代器比较的异常行为