【发布时间】:2013-11-20 21:03:31
【问题描述】:
我喜欢一致性。我最近问了使用std::begin 与例如的问题。 std::vector<int>::begin,一致的决定似乎是使用前者,因为它更通用。但我想我在泥泞中找到了一根棍子。有时,你想表达你不会在循环时更改容器,因此调用std::vector<int>::cbegin。如果您有时执行iter = v.cbegin() 而其他时间执行iter = begin(v),这将使您的代码非常不对称。有没有办法解决这种缺乏对称性的问题,考虑到这些知识,你还会推荐std::begin 吗?为什么C++没有std::cbegin?
【问题讨论】:
-
注意:C++ 将有
std::cbegin来到 C++14。 -
"为什么 C++ 没有 ___" 1) 没有人愿意这样做。 2) 它不符合 C++ 的原则(不要为不使用的东西付费,不要对平台做太多假设等) 3) 时间限制。 4) 监督。在你的情况下,可能是 4。
-
去年 Nicolas Bolas 说这是一个疏忽:stackoverflow.com/questions/12001410/… 不确定这是不是真的,但很有可能。
-
@GManNickG - 我认为知道它是四个中的哪一个很有用。 “不符合原则”意味着它永远不会存在。 “监督”或“时间限制”意味着它很有可能迟早会进入标准。
标签: c++ c++11 iterator const-correctness