O Computer Science Center é uma iniciativa conjunta do
Computer Science Club da POMI RAS,
JetBrains e da Yandex
Data Analysis School .
O centro existe para permitir que estudantes e graduados talentosos se desenvolvam em áreas de seu interesse: Ciência da Computação, Ciência de Dados ou Engenharia de Software.
O curso C ++ em duas partes do centro é ministrado por Valery Mikhailovich Lesin,
valery-l , professora no centro de CS e magistratura conjunta do ITMO e JetBrains "Desenvolvimento de Software / Engenharia de Software", diretor técnico da
Simlabs .
A segunda parte ajudará a dominar a maioria dos recursos do C ++ moderno. Provavelmente, você não se tornará um guru no final do segundo semestre, mas a habilidade deve ser suficiente para usar efetivamente o C ++ na maioria dos projetos, se as vantagens forem aplicáveis.
Vamos explorar os novos recursos da linguagem e da biblioteca padrão: mover semântica, bind / function, enable_if / if constexpr, coroutines e outros. Vejamos algumas tarefas típicas: programação multithread, usando bibliotecas no Windows e Linux e outras.
Tenha uma bela vista!
1. Biblioteca padrão. Composição, contêineres STL, tipos de contêiner, contêiner de vetor, iteradores, como o vetor funciona. Sdt :: listar contêiner, adaptadores, contêineres associativos, iteração de mapa, pesquisar e inserir no mapa. Indexação, remoção do mapa (conjunto). Outros recipientes associativos.
2. Mova a semântica e o encaminhamento perfeito. Programas rápidos. Otimização do valor de retorno. Lvalue vs Rvalue. Como distinguir um objeto temporário de um não temporário. Convertendo & <-> const & <-> &&. Mova construtor versus outros construtores. Retorne o valor vs && da função. Retorne objetos grandes por valor, transfira por valor. Problema de argumento de encaminhamento. Novas regras para links no C ++ 11. Encaminhamento perfeito.
3. Algoritmos e functores. Algoritmos padrão, descrição de algoritmos. Operações sem modificação e modificação. Classifique e pesquise. Contêineres vs iteradores. Functors padrão. Impulso alcance. Conceito de alcance.
4. ligação e função. Tarefa: chamar um retorno de chamada. Um pouco de magia - std :: bind. Como evitar copiar. ref / cref. Usando bind com functors. Chame métodos. Ligação de aninhamento. função std ::. Efeito sinérgico de ligação e função. Performance. Como os espaços reservados funcionam.
5. Exceções. Maneiras de lidar com erros. tente ... pegar. Tipos de Exceções Usando RAII. Passando parâmetros. Pilha de classe. Garantias de segurança para exceções. Garantido sem exceções. Pilha de cópias. Requisitos de pilha reduzidos. Especificação de exceções. operador noexcept e especificação noexcept (C ++ 11). Contentores STL. Pilha de garantias e requisitos.
6. Para SFINAE ou não para SFINAE. Seleção de código com base no tipo. Digite a seleção por condição. Teste de redutibilidade. Verifique a classe base. SFINAE. Verifique o recipiente. Seleção por tipo de propriedade.
7. inovações em C ++. Funções anônimas, auto, decltype, modelos variados, pacote de parâmetros, expansão de pacotes e expressão de dobras. Inicializadores de membros de dados não estáticos, se constexpr.
8. linhas. Entrada / saída. Codificação (conjunto de caracteres). String std :: basic_string. Operações básicas de string. algoritmos de string de impulso. Texto vs formato de arquivos binários. Fluxos de E / S, saída, entrada, status do fluxo, entrada / saída formatada. Manipuladores, fluxos de arquivos.
9. O pré-processador. Uso e aplicabilidade de macros. Definição de constantes, compilação condicional. Inclua guarda. Função macro. Transformando um token em uma string, concatenando tokens. Macro multilinha, define predefinido. afirmar. Macro variável, sobrecarga de macro. Idioma Pimpl.
10. Bibliotecas. Bibliotecas estáticas e dinâmicas. Estático vs Dinâmico. Download de bibliotecas sem vinculação prévia. Funções exportadas. Tecnologia COM.
11. Multithreading. Processo e threads. Tipos de multitarefa. Situações problemáticas. Crie fluxo. O objeto de fluxo é std :: thread. Funções auxiliares. Exclusão mútua. Gerenciamento de bloqueio. Captura de exceção. Exceção de exceção. Variáveis de condição.
12. Multithreading. Parte 2. Cálculos diferidos. Futuro e promessa. Assíncrono e futuro. Fila de eventos / mensagens. Contratos, conceitos.
Primeira parte do curso