【问题标题】:const_reference or iterator for map (when not actually iterating)map 的 const_reference 或迭代器(实际上不迭代时)
【发布时间】:2010-08-22 11:39:16
【问题描述】:

我有一些代码使用迭代器循环遍历 unordered_map 的所有元素,但在该循环中还有其他几个进程,我将迭代器存储到映射中的特定元素,并且通常会进行大量跳转但不迭代(不包括最外层的迭代器)。

在我看来,如果我实际上没有进行迭代,则对元素使用 unordered_map::const_reference 可能更合适。这是真的?阻止我使用 const_references 的唯一原因是,从我的快速谷歌搜索来看,它们似乎很少被大众使用,或者至少很少讨论。

【问题讨论】:

    标签: c++ map iterator const-reference


    【解决方案1】:

    常量正确性是 C++ 编程的关键之一。
    编写程序并在事后添加 const 正确性非常困难(因为它通过代码级联),您需要提前完成。

    因此,您应该更喜欢使用 const_iterators 而不是迭代器。但就像所有事情一样,这是一个判断电话。

    就个人而言:如果我不打算修改容器中的任何元素,那么我会使用 const_iterators,但如果有可能在对象上调用非 const 方法,那么你必须只使用迭代器。

    【讨论】:

    • 但也有 const_iterators。我尝试尝试使用 const_references,但我还没有找到不使用迭代器来初始化它们的方法
    • 抱歉错过了:一旦你找到了元素,使用 const 引用可能是明智的,因为迭代器在某些情况下可能会失效。同样,它是一个判断调用,具体取决于您的代码。易于阅读意味着易于维护和修改。所以尽量使用让代码易于维护的方法。
    猜你喜欢
    • 2023-04-10
    • 2013-07-08
    • 2017-10-08
    • 2019-09-15
    • 2014-10-28
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多