C++ Academy
16.5K subscribers
620 photos
127 videos
1 file
584 links
По всем вопросам- @haarrp

@itchannels_telegram - 🔥 best it channels

РКН: clck.ru/3FmxJF
Download Telegram
Media is too big
VIEW IN TELEGRAM
Глубокое погружение в технику диспетчеризации - Джонатан Мюллер - Meeting C++ 2022
Доклад на Eng💡

В основе интерпретатора лежит цикл, который итерирует инструкции и выполняет их по порядку. Это требует диспетчеризации: исходя из текущей инструкции, он должен выбирать различный код. Быстрый интерпретатор требует быстрого диспетчера инструкций, как и все остальное, что должно переключаться между фиксированным набором различных вариантов.

В этом докладе рассматриваются различные техники диспетчеризации, начиная с виртуальных функций, простых операторов переключения и заканчивая таблицами переходов. Мы рассмотрим инструменты анализа производительности, эталоны и много-много ассемблерного кода, чтобы узнать, как обмануть компилятор и заставить его генерировать тот ассемблерный код, который нам на самом деле нужен.

Даже если вам не нужно писать интерпретатор или другой диспетчер, вы узнаете много нового об оптимизации.

источник
6
👨🏻‍💻 Подборка полезных ссылок для изучения C++

💡 LearnCpp.com — это бесплатный веб-сайт, посвященный обучению вас программированию на C++. Независимо от того, был ли у вас какой-либо предыдущий опыт программирования или нет, учебные пособия на этом сайте помогут вам выполнить все шаги по написанию, компиляции и отладке ваших программ на C++, и все это с большим количеством примеров.

💡 ravesli.com — Здесь представлены более 240 бесплатных уроков, где с нуля рассматриваются основы и тонкости языка С++ и программирования в целом. Есть пошаговые создания игр на С++ с помощью библиотек MFC и SFML, и более 70 практических заданий для проверки ваших навыков программирования.

💡 metanit.com — данный сайт посвящен различным языкам и технологиям программирования, компьютерам, мобильным платформам и ИТ-технологиям. Здесь будут выкладываться различные руководства и учебные материалы, статьи и примеры.

💡 cppstudio.com/cat/274/ — Если вы новичок в C++, предлагаю Вам прочитать этот бесплатный учебник. Здесь собрано большое количество статей для начинающих программистов по С++. Условно все статьи разделены на группы, кратко характеризующие их содержание. После прочтения статьи, можно закрепить материал, написав несколько программ. Для проверки своих теоретических знаний можно пройти тестирование по С++. В таблице после теоретических статей идет подраздел практики, в котором вы можете пройти тестирование и написать программы.

💡 cplusplus.com/doc/tutorial/ — These tutorials explain the C++ language from its basics up to the newest features introduced by C++11. Chapters have a practical orientation, with example programs in all sections to start practicing what is being explained right away.

💡 devdocs.io/cpp/ — The interface of C++ standard library is defined by the following collection of headers.

💡 https://www.cpp.com.ru/ — C++ — чрезвычайно мощный язык, содержащий средства создания эффективных программ практически любого назначения, от низкоуровневых утилит и драйверов до сложных программных комплексов самого различного назначения. На данном сайте выложено несколько книг и статей по языкам С и С++, как для начинающих, так и для профессионалов.

💡 https://en.cppreference.com/w/cpp — ещё одна хорошая документация на английском. Постоянно обновляется.

💡 https://learnc.info/ — хороший сайт с лекциями по языку C. В качестве базового языка вам предстоит изучать C. Почему именно C, а не Pascal, Python, Ruby или PHP? Этот язык заставляет вас думать обо всём. Когда программируешь на си, начинаешь понимать, что компьютер - просто железяка. Необходимо самостоятельно выделять память под объекты, затем очищать эту память, заботиться о переполнении массивов, переполнении переменных, изменении знака переменных, приведении типов, правильном обращении к памяти и т.д.
👍82🔥1
Алгоритм includes

Используется для распознавания, существуют ли все числа тз одного контейнера в других контейнерах. Это помогает проверить, является ли набор подмножеством другого набора или нет, учитывая, что набор упорядочен. Ожидается, что элементы будут отсортированы по порядку.
🔥7👍41
Сетевое программирование C++. WinSock.

1- Как написать клиент, сервер. Как установить между ними связь. Как отправить сообщение с сервера клиенту.

2- Как реализовать подключение сразу нескольких клиентов к серверу.
Как написать простой сетевой чат.

3- В этом видео показано: Как отправлять сообщения любой величины.

4- В этом уроке показано: как реализовать отправку разных типов пакетов.

Source: https://github.com/xojld0/Lessons


источник

#cpp #programming
👍92🔥2👎1
Быстрая сортировка

Отсортируйте заданный массив с помощью быстрой сортировки.

Формат входных данных:
Первая строка входных данных содержит одно натуральное число nn (1 ≤ n ≤ 10^5) – количество элементов в массиве. В следующей строке находятся элементы массива – n целых чисел, не превосходящих по абсолютной величине 10^9.

Формат выходных данных:
Выведите элементы массива в порядке неубывания.
7
Алгоритм set_symmetric_difference

Строит отсортированную последовательность из элементов, которые встречаются только в первой последовательности [first1, last1) или только во второй - [first2, last2).
👍10🔥21
#Вопросы_с_собеседования

Что лучше const или define?

Ответ:
define - это директива препроцессора, которая не учитывает ни типов, ни областей видимости. Препроцессор вставляет значение везде, где оно используется и создается множество копий 3.14159265359 в объектном коде, константа никогда не порождает больше одной копии этого значения. define трудно отлаживать, потому что у него нет имени, только магическое число, нельзя взять адрес или создать ссылку на это значение.

У const есть тип, область видимости, можно взять адрес, создать константную ссылку на эту переменную.

Определенно, лучше использовать const, а не define.


@cpluspluc
👍193🔥2
Reddit для С и С++ программистов

r/C_programming 135k
Спрашивай совета, если проблемы с кодом, помогай другим в комментариях, читай полезные статьи, которыми делятся другие участники сообщества. Сабреддит довольно активный и имеет 135k подписчиков. И это, пожалуй, единственный сабреддит, который я упомяну для С программистов. Но не переживайте, ниже ещё будет очень много всего, что я надеюсь, сможет вас заинтересовать.

r/Cpp 238k
Самый популярный сабреддит среди С++ программистов. Здесь обсуждают всё: от выступлений на известных С++ конференциях до лучших практик. Истинные фанаты С++ оценят по достоинству.

r/Cplusplus 32,8k
Менее активный сабреддит, однако не менее познавательный. Обсуждают больше нюансы программирования на С++.

r/LearnCpp 3,9k
Подходит как новичкам, так и экспертам. Этот сабреддит предназначен для обмена исходным кодом. Изучайте исходный код, чтобы лучше почувствовать и понять, как работает C++. Самый лучший способ обучения — это практика.

r/Cpp_questions 61,4k
Спрашивайте у экспертов и помогайте новичкам. Сабреддит для вопросов и ответов. Обсуждение IDE, кода, приложений и т.п.

#cpp #programming

@cpluspluc
👍61🔥1
Как работают сортировки

В ролике разбирается сортировка пузырьком (которую учит каждый новичок), выбором, ставками, Хоара, Ломуто с примерами на C++.

Также здесь сравниваются разные виды сортировок за звание лучшего и самого быстрого алгоритма.

https://youtube.com/watch?v=PF7AqefS4MU
5🔥3👍2
Бесплатные курсы по программированию C++

Программирование на языке C++(Stepik)
В курсе будет рассмотрено множество различных возможностей языка, и в том числе мы поговорим о нововведениях стандартов C++11 и C++14, стандартной библиотеке шаблонов и обработке ошибок.

Введение в программирование (C++)
Основы программирования на C++ на примере множества несложных практических задач.

Программирование на языке C++
Данный базовый курс повествует об основных средствах языка C++. Особое внимание уделяется обсуждению базовых принципов работы программ, а также процессу их компиляции. Курс далеко не исчерпывающий и покрывает лишь небольшую часть стандарта языка C++, однако мы постарались рассказать о наиболее важных возможностях этого языка.

Многопоточное программирование на С/С++
В курсе принцип многопоточного программирования рассматривается в контексте разработки сетевых и высоконагруженных систем. Ядром курса является обучение межпроцессному взаимодействию (IPC) и синхронизации потоков.

@cpluspluc
👍8🔥32🤬1