【发布时间】:2011-04-27 01:08:44
【问题描述】:
我正在循环遍历两个 STL 列表(L1、L2),如下所示:
list<int>::const_iterator itr1 = L1.begin();
list<int>::const_iterator itr2 = L2.begin();
for (itr1; itr1 != L1.end(); itr1++) {
if (*itr1 < *itr2) {
//some code
}
}
它编译得很好,但是当我运行它时,它显示“表达式:列表迭代器不可取消引用”
现在在课堂上我们制作了 STL 列表的模拟版本,我们在其中编写了自己的 STL 列表,并且我们重载了 * 操作符以取消引用迭代器。但是,显然它在这里不起作用。
如何取消对迭代器的引用,或者如果 STL 列表以不同的方式执行,它是如何执行的。我看过这个:
http://www.sgi.com/tech/stl/List.html
文档,似乎没有找到任何接受成员“引用”的内容,但仍然没有看到如何引用迭代器指向的内容,除非它是列表的第一部分或最后一部分。
有人知道这里发生了什么吗?谢谢
这是一个pastebin:
【问题讨论】:
-
我对答案做了最好的猜测,但是当我编译上面的代码时,它工作得很好。您可能需要添加操作系统和编译器详细信息。
-
发布一些完整代码以显示问题的好地方是pastebin.com 和codepad.org
-
例如,我从这里做了一个程序,并把它放在键盘上:codepad.org/JgMBNAiW
-
我在原帖中放了一个 pastebin。再次感谢你们的帮助。
-
粘贴的代码无法编译,但经过必要的琐碎修复后,它可以正常工作:ideone.com/EbeVt
标签: c++ list stl dereference