Conceitos padrão comuns: integral e intervalos
Use conceitos da biblioteca padrão, como integral e ranges::range
Conceitos padrão comuns: integral e intervalos é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.
A biblioteca padrão de conceitos
O C++20 introduziu muitos conceitos padrão em <concepts> e <ranges>. Saber quais são evita que você escreva os seus próprios.
Conceitos fundamentais da linguagem
Os conceitos fundamentais:
std::same_as<T, U>std::derived_from<T, U>std::convertible_to<T, U>std::common_with<T, U>std::assignable_from<T, U>
Conceitos aritméticos
Restrinja aos tipos numéricos:
std::integral— qualquer tipo inteirostd::signed_integral— inteiro com sinalstd::unsigned_integral— inteiro sem sinalstd::floating_point— float, double, long double
template <std::floating_point T>
T mean(T a, T b) { return (a + b) / 2; }Conceitos de comparação
Imponha restrições aos tipos para igualdade e ordenação:
std::equality_comparablestd::totally_orderedstd::three_way_comparable
Conceitos de objetos
Requisitos comuns:
std::movablestd::copyablestd::default_initializablestd::semiregularstd::regular
template <std::regular T>
class Container { /* full-fledged value type */ };Conceitos de objetos chamáveis
Para funções e objetos função:
std::invocable<F, Args...>std::regular_invocable<F, Args...>std::predicate<F, Args...>
template <std::invocable<int> F>
void apply_to_42(F&& f) {
std::forward<F>(f)(42);
}Conceitos de iteradores
Em <iterator>:
std::input_iteratorstd::forward_iteratorstd::bidirectional_iteratorstd::random_access_iteratorstd::contiguous_iterator
Conceitos de intervalos (C++20)
De <ranges>:
std::ranges::range— tem begin/endstd::ranges::view— intervalo sem possestd::ranges::sized_range— conhece seu tamanho em O(1)std::ranges::random_access_range
template <std::ranges::range R>
auto first(R&& r) {
return *std::ranges::begin(r);
}Combinando conceitos
Combine conceitos para expressar requisitos precisos.
template <std::ranges::random_access_range R>
requires std::integral<std::ranges::range_value_t<R>>
auto sum(const R& r) {
return std::reduce(std::ranges::begin(r), std::ranges::end(r));
}Conceitos personalizados sobre conceitos padrão
Crie conceitos específicos do domínio com base nos conceitos padrão.
template <typename T>
concept Number = std::integral<T> || std::floating_point<T>;Algoritmos baseados em conceitos
Os algoritmos de intervalos do C++20 têm muitas restrições baseadas em conceitos. As mensagens de erro indicam diretamente qual conceito falhou quando você passa um tipo inadequado.
Resumo rápido
Use conceitos integrados sempre que possível:
- Números →
integral/floating_point - Iteração →
ranges::range - Chamável →
invocable/predicate - Tipo de valor →
regularousemiregular
Verificação rápida
Qual conceito padrão descreve um tipo que tem begin() e end()?
Recapitulação
A biblioteca padrão oferece bibliotecas ricas de conceitos: aritméticos (integral, floating_point), comparáveis (equality_comparable), de objetos (movable, regular), invocáveis, iteradores e intervalos. Use-os como base para suas próprias restrições.
Aprenda C++ com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 51
- Aulas
- 203
Perguntas Frequentes
A aula “Conceitos padrão comuns: integral e intervalos” é grátis?
Sim — o texto completo de “Conceitos padrão comuns: integral e intervalos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.
O que vou aprender em “Conceitos padrão comuns: integral e intervalos”?
Use conceitos da biblioteca padrão, como integral e ranges::range Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C++ Academy?
Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Conceitos padrão comuns: integral e intervalos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C++ Academy?
Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que conceitos em vez de SFINAE
- Definir conceitos com requires
- Usar conceitos em modelos e auto
- Conceitos padrão comuns: integral e intervalos