Range loops – Escrevendo código seguro

Eu estava olhando um código de um sistema e me deparei com um trecho que me fez torcer o nariz. O código funcionava, mas imediatamente vi dois problemas potenciais: Bug de int/unsigned int Um vector::size() – 1 Se size for 0, o resultado será 4294967295 ou 0xFFFFFFFF! Código confuso e facilmente quebrável msgs[count] – Não…

Range against the machine

Uma característica do C++ moderno é o range-based for. Antes de falar de qualquer teoria e para que fique mais claro, segue um exemplo: View the code on Gist. O range-based for se baseia em intervalos e iteradores. O que é um iterador em C++ ? Grosseiramente é um ponteiro que suporte aritmética de ponteiros…