我循環通過兩個STL列表(L1,L2),像這樣:取消引用C++ STL列表迭代器
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
}
}
它編譯罰款,但是當我運行它,它說:「表達式:列表迭代器不dereferencable」
現在在課上,我們製作了一個STL列表的模擬版本,我們編寫了自己的STL列表,並且我們重載了*運算符來取消引用迭代器。但是,顯然這不是在這裏工作。
如何取消引用迭代器,或者如果STL列表以不同的方式執行,它是如何執行的。我通過這個看:
http://www.sgi.com/tech/stl/List.html
文檔和似乎沒有找到任何接受會員「引用」,但仍然沒有看到如何引用什麼的迭代器指向,除非它是第一個或最後一個列表的一部分。
任何人都知道這裏發生了什麼?謝謝
這裏是一個引擎收錄:
我做了我最好的猜測答案,但是當我編譯上面的代碼只是正常工作。您可能需要添加操作系統和編譯器詳細信息。 – 2011-04-27 01:15:39
發佈一些完整的代碼來顯示問題的好地方是http://pastebin.com和http://codepad.org – 2011-04-27 01:18:11
例如,我從此做出了一個程序,並將它放在鍵盤上:http:// codepad .org/JgMBNAiW – 2011-04-27 01:22:04