Объектно-ориентированное программирование
в C++
Автор: Роберт Лафоре
Год издания: 2021
#cpp #ru
Скачать книгу
в C++
Автор: Роберт Лафоре
Год издания: 2021
#cpp #ru
Скачать книгу
Основы разработки программ на языке C++
Автор: Станислав Беляков
Год издания: 2020
#cpp #ru
Скачать книгу
Автор: Станислав Беляков
Год издания: 2020
#cpp #ru
Скачать книгу
Ставь 👍 если знал ответ, 🔥 если нет
Please open Telegram to view this post
VIEW IN TELEGRAM
•
erase() — удаляет один элемента или диапазон элементов из контейнера, такого как std::vector, std::set, и т.д.•
clear() — удаляет все элементы из контейнера, оставляя его пустым. После вызова clear() размер контейнера становится равным нулю.🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
«Преждевременная оптимизация — корень всех зол» (Д. Кнут или Э. Хоар — в зависимости от того, какой источник смотрите)
Плюсы, пожалуй, наиболее яркая тому демонстрация: огромное количество ошибок в C++ коде связаны с неопределенным поведением, заложенным в фундаменте языка просто для того, чтобы дать простор оптимизациям на этапе компиляции.
Если ты собираешься писать на C++ код, в работоспособности которого хочешь быть хоть немного уверенным, стоит знать о существовании различных подводных камней и ловко расставленных мин в стандарте языка, его библиотеке, и всячески их избегать.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
Бросаем число
#новичкам
Мы привыкли, что исключения имеют какую-то свою иерархию и каждый класс имеет свое конкретное назначение в контексте отображения ошибки.
А что если мы попытаемся бросить что-то совсем несвязанное с иcключениями? Например, какой-нибудь тривиальный тип вроде int. Это вообще законно?
Абсолютно законно. В С++ можно бросать все, что угодно, кроме объектов неполных типов, абстрактных классов и указателей на неполный тип. Даже указатель на void можно.
Как и число.
Поймать число примерно также просто, как его бросить:
Это кстати один из любимых вопросов у интервьюеров.
"А можно ли кидать число вместо исключения?"
Теперь вы с полной уверенностью ответите "можно".
Но вот зачем это может быть нужно? Оставьте ваши мысли в комментариях
Make sense. Stay cool.
#interview #cppcore
#новичкам
Мы привыкли, что исключения имеют какую-то свою иерархию и каждый класс имеет свое конкретное назначение в контексте отображения ошибки.
А что если мы попытаемся бросить что-то совсем несвязанное с иcключениями? Например, какой-нибудь тривиальный тип вроде int. Это вообще законно?
Абсолютно законно. В С++ можно бросать все, что угодно, кроме объектов неполных типов, абстрактных классов и указателей на неполный тип. Даже указатель на void можно.
Как и число.
Поймать число примерно также просто, как его бросить:
void foo() {
throw 1;
}
int main() {
try {
foo();
}
catch(int i) {
std::cout << i << std::endl;
}
}
// OUTPUT: 1Это кстати один из любимых вопросов у интервьюеров.
"А можно ли кидать число вместо исключения?"
Теперь вы с полной уверенностью ответите "можно".
Но вот зачем это может быть нужно? Оставьте ваши мысли в комментариях
Make sense. Stay cool.
#interview #cppcore
Что выведет следующий код и почему?
Ответ:
int
Почему?
Число 97 по умолчанию имеет тип , поэтому вызывается версия
Если бы мы передали(символьный литерал), то вызвалась бы
⚡️ Подвох: Если бы параметр был, то могла бы произойти неявная конверсия, но тут всё однозначно! 😊
#include <iostream>
void foo(int a) { std::cout << "int"; }
void foo(char a) { std::cout << "char"; }
int main() {
foo(97);
return 0;
}
Ответ:
Почему?
Число 97 по умолчанию имеет тип
intfoo(int).Если бы мы передали
'a' foo(char).⚡️ Подвох: Если бы параметр был
unsigned char🎥 Вебинар по C++: Паттерн многопоточного программирования «Producer-Consumer»
Когда несколько потоков одновременно работают с данными, недостаточно просто «запустить работу параллельно». Нужно правильно организовать передачу задач между потоками, не потерять данные и избежать ситуаций, когда приложение внезапно зависает.
👉 Разберём один из самых распространённых паттернов многопоточной разработки - Producer-Consumer. На практическом примере посмотрим, как один или несколько потоков создают задачи, другие их обрабатывают и какую роль между ними играет общая очередь.
Отдельное внимание уделим проблемам, с которыми разработчики сталкиваются на практике: гонкам данных, зависаниям, неправильной синхронизации и ситуации, когда задачи поступают быстрее, чем успевают обрабатываться.
🤓 План вебинара:
- Producer-Consumer: какую задачу решает паттерн
- Собираем Producer-Consumer на C++
- Почему многопоточный код «иногда работает, а иногда нет»
- Что делать, если Producer работает быстрее Consumer
- Разбор итоговой реализации и вопросы
🧠 Вебинар приурочен к старту курса «C++-разработчик. Продвинутый уровень», который помогает системно усилить навыки: от современных стандартов C++20 и C++23 до проектирования, многопоточности, работы с сетью, базами данных и большими объёмами информации.
👉 Для участия зарегистрируйтесь: https://vk.cc/d20AAu
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Когда несколько потоков одновременно работают с данными, недостаточно просто «запустить работу параллельно». Нужно правильно организовать передачу задач между потоками, не потерять данные и избежать ситуаций, когда приложение внезапно зависает.
👉 Разберём один из самых распространённых паттернов многопоточной разработки - Producer-Consumer. На практическом примере посмотрим, как один или несколько потоков создают задачи, другие их обрабатывают и какую роль между ними играет общая очередь.
Отдельное внимание уделим проблемам, с которыми разработчики сталкиваются на практике: гонкам данных, зависаниям, неправильной синхронизации и ситуации, когда задачи поступают быстрее, чем успевают обрабатываться.
🤓 План вебинара:
- Producer-Consumer: какую задачу решает паттерн
- Собираем Producer-Consumer на C++
- Почему многопоточный код «иногда работает, а иногда нет»
- Что делать, если Producer работает быстрее Consumer
- Разбор итоговой реализации и вопросы
🧠 Вебинар приурочен к старту курса «C++-разработчик. Продвинутый уровень», который помогает системно усилить навыки: от современных стандартов C++20 и C++23 до проектирования, многопоточности, работы с сетью, базами данных и большими объёмами информации.
👉 Для участия зарегистрируйтесь: https://vk.cc/d20AAu
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❤2👍1
map использует структуру красно-черного дерева, поддерживая упорядоченность элементов, тогда как unordered_map применяет хеш-таблицу, распределяя элементы по бакетам на основе их хеша.
Ставь 👍 если знал ответ, 🔥 если нет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1