Eu costumava escrever código de uma forma que pudesse ser lido em inglês simples.
Alguém pode dar uma pista de como é melhor ler o código abaixo nesses termos?
Meu problema é que o código abaixo diz “apagar todos os elementos únicos”, mas faz exatamente o oposto.
Esta não é uma sugestão para retrabalhar STL e intervalos de alguma forma, apenas estou curioso sobre algum truque para considerar/tratar std::unique
(e alguns outros métodos) neste contexto para tornar este texto menos contra-intuitivo.
Na ausência de “não” no código abaixo (o que poderia ajudar a ler como “não exclusivo” ou “exceto exclusivo”) qual seria a melhor maneira de ler este código?
std::vector<T> v = …;
std::sort(v.begin(), v.end());
v.erase(std::unique(v.begin(), v.end()), v.end());
A versão Ranges não é melhor nestes termos:
std::vector<T> v = …;
std::ranges::sort(v);
v.erase(std::ranges::unique(v), v.end());
Uma transliteração muito literal para o inglês seria:
"Classifique v, para que o próximo passo tenha o resultado esperado. De v, apague entre o resultado de único de v e o final de v"
Que poderia ser levemente massageado
"Apague tudo depois dos elementos únicos"