Lambda e a Inferência

Duas das coisas que mais me agradaram no C++ atual são: a inferência de tipo e as expressões lambda (ou simplesmente lambda). Neste post, quero focar em 5 pontos interessantes sobre estes assuntos. São eles: 1. O que é um lambda? 2. Lambda e Functor, qual a relação entre eles? 3. Como funciona a inferência…

Medindo o tempo do seu código

Uma das facilidades do padrão para o C++ moderno é a presença de construções que permitem a manipulação de data e tempo. Estes utilitários podem ser encontrados na biblioteca chrono, como você poderá conferir em algumas referências e documentações que se encontram disponíveis, como por exemplo, as minhas favoritas: Documentação do Visual C++, Cplusplus.com e…

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…

Tamanho e alinhamento

Uma coisa que eu gosto bastante no C++ e que poucas vezes é visto com o devido cuidado é a forma como a memória é alocada. Eu ouço constantemente o mantra: Hoje temos muita memória disponível, um pouco a mais não faz diferença. Opa, perai. É verdade que é comum encontrarmos máquinas com 16, 32,…

Do macro ao template

Uma coisa que gera discussões acirradas dentre as pessoas nestes tempos mais modernos do C++ é o uso de macros. Dentre os argumentos contra as macros estão os de que o uso de macros leva a criação de uma nova linguagem (o que é bem verdade quando usado sem moderação). Quando se está desenvolvendo em…

Construtor e Operador =

Constructors e operador = É bem comum que as pessoas não entendam e nem saibam a razão de existir o copy/move constructor e assignment operator. Por padrão, classes no C++ são do tipo value_type. Isso faz com que ao atribuir algo a uma variável de classe, uma cópia de ponteiros não possa ser feita pela…