2010-08-22 91 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