c++ - ¿Hay alguna manera de utilizar ''std:: begin` independiente y de un const_iterator?
c++11 const-correctness (2)
Me gusta la coherencia. Hace poco pregunté sobre el uso de std::begin
vs. eg std::vector<int>::begin
, y la decisión unánime parecía ser utilizar el primero ya que es más general. Pero creo que encontré un palo en el barro. A veces, desea transmitir que no va a cambiar un contenedor mientras lo recorre, por lo tanto, debe llamar a std::vector<int>::cbegin
. Sería bastante asimétrico si tu código hiciera iter = v.cbegin()
y otras veces iter = begin(v)
. ¿Hay alguna forma de evitar esta falta de simetría, y aún recomendaría std::begin
dado este conocimiento? ¿Por qué C ++ no tiene std::cbegin
?
Cuando su contenedor se declara "const", por ejemplo, se pasa a una función como foo(const std::vector<int> & v)
, luego std::begin
realmente devolverá un const_iterator
.
C ++ 14 tiene cbegin
/ cend
/ etc. y está comenzando a estar disponible en los principales compiladores.