Quando devo usar o novo range-for e posso combiná-lo com o novo cbegin / cend?
O novo ranged-for no C ++ 11 será muito conciso e útil, é claro. Tanto quanto eu entendo como ele funciona, ele procura os "containers"begin
eend
tentando * Argument-Depend-Lookup "(ADT).
Mas outra adição é que todos os contêineresagora temcbegin()
ecend()
para obter oconst_iterators
para o contêiner.
Estou um pouco confuso, por um lado, acho que devo usarcbegin()
se eu fizernã deseja modificar o contêiner, por outro lado, tenho que adicionar um @ adicionconst
dentro de ranged-for para obter a mesma coisa.
ntão, parece assim:
// print all
for(const auto elem : data)
cout << elem
sando ADT, localizando data.begin (), assimconst
necessário
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
usingdata.cbegin()
, portanto, nãoconst
necessário
Mas isso não seria mais "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
Eu recebi o "idioma" certo? Alguma adição?Quando devo usarcbegin
?Eu sinto falta de algo com range-for, procurandobegin()
sóEditarorreção de erValue vs Iterator