Идиомы и паттерны проектирования
в современном С++
Автор: Федор Г. Пикус
Год издания: 2020
#cpp #ru
Скачать книгу
в современном С++
Автор: Федор Г. Пикус
Год издания: 2020
#cpp #ru
Скачать книгу
Объектно-ориентированное программирование
в 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
❤2👍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
👨💻На работе код читают чаще, чем пишут. Когда смысл приходится восстанавливать по комментариям, неочевидным параметрам и скрытым договорённостям, команда теряет время, а риск ошибок растёт.
📆16 июля в 20:00 МСК на открытом уроке разберем, как переносить смысл программы в типы, сигнатуры и структуру кода. На примерах из реальных проектов участники сделают сигнатуры понятнее с помощью std::optional и enum class, упростят управление ресурсами через RAII и заменят сложные циклы готовыми алгоритмами, ranges и views.
В результате у вас появится набор приёмов для более ясного и самодокументируемого кода.
🏁Урок проходит в преддверии старта курса «C++-разработчик». Зарегистрируйтесь, чтобы познакомиться с форматом обучения, задать вопросы эксперту и потренироваться выражать намерения средствами языка, а не комментариями: https://vk.cc/cZn84F
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
📆16 июля в 20:00 МСК на открытом уроке разберем, как переносить смысл программы в типы, сигнатуры и структуру кода. На примерах из реальных проектов участники сделают сигнатуры понятнее с помощью std::optional и enum class, упростят управление ресурсами через RAII и заменят сложные циклы готовыми алгоритмами, ranges и views.
В результате у вас появится набор приёмов для более ясного и самодокументируемого кода.
🏁Урок проходит в преддверии старта курса «C++-разработчик». Зарегистрируйтесь, чтобы познакомиться с форматом обучения, задать вопросы эксперту и потренироваться выражать намерения средствами языка, а не комментариями: https://vk.cc/cZn84F
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❤1👍1
Что выведет следующий код и почему?
Ответ:
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