Kursus C ++ di CS center, bagian kedua

Pusat Ilmu Komputer adalah inisiatif bersama dari Klub Ilmu Komputer di POMI RAS, JetBrains dan Sekolah Analisis Data Yandex.

Pusat ini ada untuk memungkinkan siswa dan lulusan berbakat untuk mengembangkan di bidang yang menarik bagi mereka: Ilmu Komputer, Ilmu Data atau Rekayasa Perangkat Lunak.

Kursus C ++ di dua bagian di pusat diajarkan oleh Valery Mikhailovich Lesin, valery-l , seorang dosen di pusat CS dan magistrasi bersama ITMO dan JetBrains “Rekayasa Perangkat Lunak / Rekayasa Perangkat Lunak”, direktur teknis Simlabs .

Bagian kedua akan membantu untuk menguasai sebagian besar kemampuan C ++ modern. Kemungkinan besar, Anda tidak akan menjadi guru di akhir semester kedua, tetapi keterampilan tersebut harus cukup untuk menggunakan C ++ secara efektif di sebagian besar proyek, jika keunggulannya berlaku di sana.

Kami akan menjelajahi fitur baru bahasa dan pustaka standar: pindahkan semantik, ikat / fungsi, enable_if / jika constexpr, coroutine, dan lainnya. Mari kita lihat beberapa tugas umum: pemrograman multithread, menggunakan pustaka di Windows dan Linux, dan lainnya.

Selamat menikmati!

1. Perpustakaan standar. Komposisi, wadah STL, jenis wadah, wadah vektor, iterator, cara kerja vektor. Sdt :: daftar wadah, adaptor, wadah asosiatif, iterasi peta, pencarian dan masukkan ke dalam peta. Pengindeksan, penghapusan dari peta (set). Wadah asosiatif lainnya.


2. Pindahkan semantik && penerusan sempurna. Program cepat. Pengembalian Nilai Pengembalian. Lvalue vs Rvalue. Cara membedakan objek sementara dari objek non-sementara. Konversi & <-> const & <-> &&. Pindahkan konstruktor vs konstruktor lainnya. Kembalikan nilai vs && dari fungsi. Kembalikan objek besar dengan nilai, transfer dengan nilai. Meneruskan masalah argumen. Aturan baru untuk tautan di C ++ 11. Penerusan sempurna.


3. Algoritma dan fungsi. Algoritma standar, deskripsi algoritma. Operasi non-modifikasi dan modifikasi. Sortir dan cari. Kontainer vs iterator. Fungsional standar. Tingkatkan jangkauan. Konsep jangkauan.


4. mengikat & fungsi. Tugas: memanggil panggilan balik. Sedikit sihir - std :: bind. Bagaimana menghindari penyalinan. ref / cref. Menggunakan bind dengan functors. Metode panggilan. Mengikat bersarang. std :: function. Efek sinergis dari ikatan & fungsi. Performa. Bagaimana placeholder bekerja.


5. Pengecualian. Cara menangani kesalahan. coba ... tangkap. Jenis Pengecualian Menggunakan RAII. Melewati parameter. Tumpukan kelas. Jaminan keamanan untuk pengecualian. Dijamin tidak ada pengecualian. Salin tumpukan. Persyaratan tumpukan berkurang. Spesifikasi pengecualian. operator noexcept dan spesifikasi noexcept (C ++ 11). Wadah STL. Jaminan dan tumpukan persyaratan.


6. Ke SFINAE atau tidak ke SFINAE. Pemilihan kode berdasarkan jenis. Jenis pemilihan berdasarkan kondisi. Tes reducibilitas. Periksa kelas dasar. SFINAE. Periksa wadahnya. Seleksi berdasarkan jenis properti.


7. Inovasi C ++. Fungsi anonim, otomatis, jenis deklarasi, templat variadic, paket parameter, ekspansi paket & ekspresi lipatan. Inisialisasi anggota data non-statis, jika constexpr.


8. Baris. Input / output. Pengkodean (set karakter). String std :: basic_string. Operasi string dasar. meningkatkan algoritma string. Teks vs. Format file biner. I / O stream, output, input, status stream, input / output yang diformat. Manipulator, aliran file.


9. Pra-prosesor. Penggunaan dan penerapan makro. Definisi konstanta, kompilasi bersyarat. Termasuk penjaga. Fungsi makro. Mengubah token menjadi string, toaten gabungan. Multiline macro, didefinisikan sebelumnya. menegaskan. Makro variabel, makro overload. Pimpl idiom.


10. Perpustakaan. Perpustakaan statis dan dinamis. Statis vs Dinamis. Mengunduh perpustakaan tanpa menautkan sebelumnya. Fungsi yang Diekspor. Teknologi COM.


11. Multithreading. Proses dan utas. Jenis multitasking. Situasi masalah. Buat aliran. Objek stream adalah std :: thread. Fungsi bantu. Pengucilan bersama. Manajemen kunci. Pengecualian menangkap. Rethrow pengecualian. Variabel kondisi.


12. Multithreading. Bagian 2. Perhitungan ditangguhkan. Masa Depan dan Janji. Async dan Future. Antrian acara / pesan. Kontrak, konsep.


Bagian pertama dari kursus

Source: https://habr.com/ru/post/id473484/


All Articles