¿Cuándo debo usar el nuevo rango y puedo combinarlo con el nuevo cbegin / cend?
El nuevo ranged-for en C ++ 11 será muy conciso y útil, por supuesto. Hasta donde entiendo cómo funciona, busca los "contenedores"begin
yend
probando * Argument-depend-Lookup "(ADT).
Pero otra adición es que todos los contenedoresahora tienencbegin()
ycend()
para obtener elconst_iterators
para el contenedor.
Estoy un poco confundido, por un lado, creo que debería usarcbegin()
si lo hagon quiero modificar el contenedor, por otro lado tengo que agregar un @ adicionconst
dentro de ranged-for para obtener lo mismo.
Entonces, se ve así:
// print all
for(const auto elem : data)
cout << elem
using ADT, buscando data.begin (), por lo tantoconst
necesario
vs
// print everything but the first (a reason not to use range-for)
for(auto it = data.cbegin()+1; it!=data.cend(); ++it)
cout << *it
utilizandodata.cbegin()
, por lo tanto noconst
necesario
¿Pero esto no sería más "idiomático"?:
// print everything but the first (a reason not to use range-for)
for(const auto it = data.begin()+1; it!=data.end(); ++it)
cout << *it
¿Entendí el "idioma" verdad? ¿Alguna adición? ¿Cuándo debo usarcbegin
? ¿Echo de menos algo con ranged-for, buscandobegin()
¿solamenteEditar corrección de errorValue vs Iterator