遍历指向错误元素的列表

Iterator over a list pointing to wrong elements

本文关键字:列表 错误元素 遍历      更新时间:2023-10-16

我有两个变量:std::list lst;std::list<A*>::iterator lstiter,其中A是一个类。lst中充满了指向类的指针!B是另一个同时包含两个变量的类。

将迭代器放在列表的开头:

void B::iterstart() {
lstiter = lst.begin();
}
void B::iternext() { 
iteratend();
lstiter = ++lstiter;
}
void B::iterprev() {
iteratstart(); 
lstiter = --lstiter;
}
void B::iteratend() {
 if (lst.empty())
    throw -1;
if (lstiter == lst.end()) 
    throw "Error: end of listn"; 
}
void B::iteratstart() {
if (lst.empty())
     throw -1; 
if (lstiter == lst.begin())
    throw "Error: begin of listn"; 
}

(我还有一个函数,它可以将指针指向列表中的元素,而迭代器目前也在指向该元素。当列表中没有元素时,当我试图越过最后一个或第一个元素时,Iteratend和iteratstart会抛出异常。这就是我的问题所在!)!现在我打电话:iterstart(); iternext(); iternext(); iternext();我从来没有收到消息!(列表末尾)

我也有一些其他的错误,有时我会调用prev过程,但我会得到下一个过程的返回值!(但我想先解决另一个问题)

lstiter = ++lstiter错误。对于整数,它可能有效,但当与复杂的C++对象一起使用时,它并不总是正确执行,因为它取决于增量和复制函数的具体实现。还有,你为什么要这么做?你只需要++lstiter