簡體   English   中英

在C ++中使用Set Iterator

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM