遍历指向错误元素的列表
Iterator over a list pointing to wrong elements
我有两个变量: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
。
相关文章:
- emplace_back初始化列表错误,当初始化列表在独立变量上工作时
- OpenCV 文件存储 - 错误:元素之间的解析错误 (icvYMLParseValue) 缺失
- 如何从该列表的元素中获取 std::list<T>::迭代器?
- 双链接列表添加元素不起作用,不知何故它总是保持为空
- 如何显示图形邻接列表的元素?
- GDB 列表错误"No such file or directory"
- 数组初始值设定项必须是初始值设定项列表错误未显示
- 成员初始值设定项列表错误的统一初始化
- 链接列表中元素的成对交换(通过更改指针)
- C 模板二进制搜索树 - 参数列表错误
- 链接列表错误 - 为什么头和尾引用指向相同地址
- 没有与参数列表错误匹配的重载函数" "实例
- 移动初始化列表的元素是安全的吗?
- 使用指针扭转列表的元素
- C 链接列表错误:lvalue作为分配的左操作数所需
- 初始值设定项列表中元素的求值顺序
- 访问C++中列表列表的元素
- 嵌套模板列表错误
- 邻接列表错误与列表
- 遍历指向错误元素的列表