[英]Using a Set Iterator in C++
當我嘗試在C ++中以調試模式使用set迭代器時,我收到一個錯誤,上面寫着“map / set iterator not dereferencable”。 我不明白,因為我認為dereferincing是你應該如何使用迭代器。 代碼如下所示:
set<int>::iterator myIterator;
for(myIterator = mySet.begin();
myIterator != mySet.end();
myIterator++)
DoSomething(*myIterator)
這是我在網上看到的關於如何使用迭代器的所有示例的格式。 我究竟做錯了什么?
如果DoSomething()
更改了set - 刪除或插入項,那么您持有的迭代器將失效,這可能會導致此錯誤。
你做錯的第一件也是最重要的事情就是編寫這樣的代碼。 你上面的內容是手工編寫的相當於:
std::for_each(mySet.begin(), mySet.end(), DoSomething);
在實現算法之外,迭代器的實際用途相對較少。 偶爾使用map或multimap(或unordered_ [multi] map)是合理的,但這主要是使用std :: pair來補償map和multimap,這並不完美。
該錯誤通常意味着您正在訪問“end()”迭代器。
這個問題是基於錯誤的前提。 我看到錯誤“map / set iterator not dereferencable”,並認為這是一個應用於所有map / set迭代器的一般語句,就像我說的那樣沒有任何意義。 但我再看一遍,真正的問題只是我用來訪問迭代器的指針無效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.