2010-08-22 122 views
0

我有一些代碼使用迭代器遍歷unordered_map的所有元素,但在該循環中有幾個其他過程,我將迭代器存儲到映射中的特定元素,並且通常會進行大量跳躍但不迭代(不包括最外層的迭代器)。const_reference或迭代器的映射(當沒有實際迭代時)

在我看來,如果我實際上沒有迭代,那麼對元素使用unordered_map::const_reference可能更合適。這是真的?阻止我使用const_references的唯一的事情是,從我的快速谷歌搜索他們似乎很少被民衆使用,或至少很少討論。

回答

1

const正確性是C++編程的關鍵之一。
編寫一個程序並在事實之後添加const正確性非常困難(因爲它會級聯代碼),所以您需要預先完成。

因此,您應該更喜歡使用const_iterators over迭代器。但像所有的事情一樣,這是一個判斷的呼喚。個人:如果我不打算修改容器中的任何元素,那麼我會使用const_iterators,但是如果有可能在對象上調用非const方法,那麼您必須使用迭代器。

+0

但也有const_iterator。我嘗試過使用const_references進行實驗,但是我沒有找到一種方法來在不使用迭代器的情況下初始化它們。 – zenna 2010-08-22 12:23:01

+0

抱歉錯過了:一旦找到元素,使用const引用可能是明智的做法,因爲迭代器在某些情況下可能會失效條件。這又是一個判斷電話,取決於你的代碼。易於閱讀意味着易於維護和修改。因此,請使用使代碼儘可能易於維護的方法。 – 2010-08-22 13:51:33