🔥 Время прокачивать свои навыки по безопасности и расти!
💥 Проверь себя – пройди тест по ИБ
Ответишь успешно — пройдешь на курс «Rust Developer. Professional» от OTUS по специальной цене со скидкой.
❗️На курсе ты научишься разворачивать Rust и среду разработки, создавать надёжное, отказоустойчивое и высокопроизводительное ПО, тестировать код.
Именно эти навыки дадут мощное конкурентное преимущество IT-специалистам и повысят твою востребованность и доход!
➡️ ПРОЙТИ ТЕСТ: https://clck.ru/38yRdP
💥 Пройдете тест и бонусом получишь:
– Доступ к записям лучших вебинаров курса
– Скидку на онлайн-курс «Rust Developer. Professional»
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
💥 Проверь себя – пройди тест по ИБ
Ответишь успешно — пройдешь на курс «Rust Developer. Professional» от OTUS по специальной цене со скидкой.
❗️На курсе ты научишься разворачивать Rust и среду разработки, создавать надёжное, отказоустойчивое и высокопроизводительное ПО, тестировать код.
Именно эти навыки дадут мощное конкурентное преимущество IT-специалистам и повысят твою востребованность и доход!
➡️ ПРОЙТИ ТЕСТ: https://clck.ru/38yRdP
💥 Пройдете тест и бонусом получишь:
– Доступ к записям лучших вебинаров курса
– Скидку на онлайн-курс «Rust Developer. Professional»
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
std::consume
Синтаксис:
#для_продвинутых
std::consume — это функция, предназначенная для потребления значения из атомарной переменной. Она гарантирует, что все изменения, сделанные в атомарной переменной до вызова std::consume, будут видны в потоке, который ее вызывает.Синтаксис:
void std::consume(std::atomic<T>& var);
#для_продвинутых
std::acquire
#для_продвинутых
std::acquire — это функция, используемая в многопоточном программировании для синхронизации доступа к разделяемым ресурсам. Она позволяет потоку получить эксклюзивный доступ к ресурсу, гарантируя, что никакой другой поток не сможет изменить его, пока он не будет освобожден.#для_продвинутых
std::nullopt
Когда использовать std::nullopt:
— Когда значение может отсутствовать, например, при работе с базами данных, где некоторые поля могут быть пустыми.
— Чтобы избежать использования
— Для обеспечения унифицированного интерфейса:
#для_продвинутых
std::nullopt — это константа типа std::nullopt_t, которая используется для обозначения отсутствия значения в переменной типа std::optional.Когда использовать std::nullopt:
— Когда значение может отсутствовать, например, при работе с базами данных, где некоторые поля могут быть пустыми.
— Чтобы избежать использования
nullptr: std::nullopt является более безопасным и явным способом обозначения отсутствия значения.— Для обеспечения унифицированного интерфейса:
std::optional позволяет унифицировать код, работающий с значениями, которые могут отсутствовать.#для_продвинутых
std::launder
Функция
Функция
Что такое алиасинг?
Алиасинг — это ситуация, когда два или более указателя ссылаются на один и тот же объект в памяти.
Что такое строгий алиасинг?
Строгий алиасинг — это правило компилятора, которое запрещает модифицировать объект через указатель одного типа, если он был получен через указатель другого типа.
#для_продвинутых
Функция
std::launder была добавлена в C++17 для решения проблем, связанных с алиасингом и строгим алиасингом.Функция
std::launder используется для того, чтобы преобразовать указатель одного типа в указатель другого типа, не нарушая при этом правила строгого алиасинга.Что такое алиасинг?
Алиасинг — это ситуация, когда два или более указателя ссылаются на один и тот же объект в памяти.
Что такое строгий алиасинг?
Строгий алиасинг — это правило компилятора, которое запрещает модифицировать объект через указатель одного типа, если он был получен через указатель другого типа.
#для_продвинутых
Стать сотрудником Яндекса быстрее и проще, чем кажется. Участвуйте в днях быстрого найма: решите тестовое, пройдите несколько секций собеседования и получите офер за несколько дней.
Ближайшее мероприятие:
• 23-24 марта — Fast Track для С++ разработчиков, офер за 2 дня в команды Фудтеха Яндекса.
Зарегистрироваться
Ближайшее мероприятие:
• 23-24 марта — Fast Track для С++ разработчиков, офер за 2 дня в команды Фудтеха Яндекса.
Зарегистрироваться
std::decay
#для_продвинутых
std::decay — это шаблонная метафункция в C++, которая применяется для преобразования типа к его «распадающемуся» типу. Это означает, что она удаляет все модификаторы const, volatile, ссылки и cv-квалификаторы, а также преобразует массивы в указатели на их элементы.#для_продвинутых
🫵 Соберите свой первый проект на С++ и добавьте его в портфолио
👉 На бесплатном практическом уроке от OTUS и Карины Дорожкиной — ведущего разработчика в Kaspersky.
На вебинаре:
- разберем понятие единицы трансляции;
- проследим за ошибками компиляции и линковки, разберёмся в их причинах;
- создадим статическую библиотеку и подключим её при помощи CMake;
- обсудим разницу между статической библиотекой и динамической.
⏰ Занятие пройдёт 5 марта в 20:00 мск и будет приурочено к старту курса «Специализация C++ Developer». Доступна рассрочка на обучение!
👉 Зарегистрируйтесь прямо сейчас, чтобы занять место: https://otus.pw/faQz/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👉 На бесплатном практическом уроке от OTUS и Карины Дорожкиной — ведущего разработчика в Kaspersky.
На вебинаре:
- разберем понятие единицы трансляции;
- проследим за ошибками компиляции и линковки, разберёмся в их причинах;
- создадим статическую библиотеку и подключим её при помощи CMake;
- обсудим разницу между статической библиотекой и динамической.
⏰ Занятие пройдёт 5 марта в 20:00 мск и будет приурочено к старту курса «Специализация C++ Developer». Доступна рассрочка на обучение!
👉 Зарегистрируйтесь прямо сейчас, чтобы занять место: https://otus.pw/faQz/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Что такое std::stack?
Хорошей аналогией может быть сравнение со стопкой предметов, например, стопкой тарелок:
— Добавление элемента: Тарелки добавляются сверху.
— Удаление элемента: Тарелки снимаются сверху.
#для_начинающих
std::stack — это класс, представляющий собой стек, структуру данных, которая работает по принципу LIFO (last-in first-out или "последний вошел — первым вышел"). Это означает, что первым всегда извлекается последний добавленный элемент.Хорошей аналогией может быть сравнение со стопкой предметов, например, стопкой тарелок:
— Добавление элемента: Тарелки добавляются сверху.
— Удаление элемента: Тарелки снимаются сверху.
#для_начинающих
Функция std::stold
Функция
Возвращаемое значение:
Возвращает значение типа
#для_начинающих
Функция
std::stold из стандартной библиотеки C++ преобразует строку, представляющую десятичное число с плавающей запятой, в тип long double.Возвращаемое значение:
Возвращает значение типа
long double, полученное из преобразованной строки.#для_начинающих
😎Разработчик, управляй памятью эффективно!
👉Начните на бесплатном вебинаре онлайн-курса «Программист С» — «Реализация динамических структур данных на Си и Python»: регистрация
Структура вебинара:
- Примеры динамических структур данных
- Схемы управления динамической памятью в С и Python
- Реализация бинарного дерева на С и Python
- Применение функций управления динамической памятью.
Вебинар будет полезен:
- Программистам, изучающим языки С и Python, для развития навыков в области эффективного управления памятью.
- Разработчикам в области больших данных.
🤝Понравится вебинар — продолжите обучение на курсе по специальной цене и даже в рассрочку!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👉Начните на бесплатном вебинаре онлайн-курса «Программист С» — «Реализация динамических структур данных на Си и Python»: регистрация
Структура вебинара:
- Примеры динамических структур данных
- Схемы управления динамической памятью в С и Python
- Реализация бинарного дерева на С и Python
- Применение функций управления динамической памятью.
Вебинар будет полезен:
- Программистам, изучающим языки С и Python, для развития навыков в области эффективного управления памятью.
- Разработчикам в области больших данных.
🤝Понравится вебинар — продолжите обучение на курсе по специальной цене и даже в рассрочку!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Функция std::getline
Функция std::getline в C++ используется для чтения строк из потока ввода, обычно с клавиатуры. Она является частью стандартной библиотеки C++ (iostream) и позволяет считывать строки, содержащие пробелы, в отличие от оператора извлечения (>>), который останавливается на первом пробеле.
#для_начинающих
Функция std::getline в C++ используется для чтения строк из потока ввода, обычно с клавиатуры. Она является частью стандартной библиотеки C++ (iostream) и позволяет считывать строки, содержащие пробелы, в отличие от оператора извлечения (>>), который останавливается на первом пробеле.
#для_начинающих
20 марта: C++ митап в Петербурге и онлайне
Первая за очень долгое время встреча плюсовиков в Питере уже скоро!
В программе:
• Доклад «Цена абстракции» от Константина Владимирова (Syntacore). Поговорим, как правильно использовать виртуальные функции, исключения, ranges и coroutines.
• Доклад «Линтеры: хорошо, но мало» от Евгения Фёклина (PVS-Studio). Узнаем, как работает статический анализ кода.
• Дискуссия про как организовать процесс код-ревью в команде. Опытом поделятся Илья Казаков (YADRO), Андрей Аксенов (AvitoTech, по видео), Станислав Юрченко (VK) и Александр Еналдиев (Kaspersky).
Митап бесплатный.
Забирайте место в зале или получите ссылку на трансляцию — увидимся вечером 20 марта!
Первая за очень долгое время встреча плюсовиков в Питере уже скоро!
В программе:
• Доклад «Цена абстракции» от Константина Владимирова (Syntacore). Поговорим, как правильно использовать виртуальные функции, исключения, ranges и coroutines.
• Доклад «Линтеры: хорошо, но мало» от Евгения Фёклина (PVS-Studio). Узнаем, как работает статический анализ кода.
• Дискуссия про как организовать процесс код-ревью в команде. Опытом поделятся Илья Казаков (YADRO), Андрей Аксенов (AvitoTech, по видео), Станислав Юрченко (VK) и Александр Еналдиев (Kaspersky).
Митап бесплатный.
Забирайте место в зале или получите ссылку на трансляцию — увидимся вечером 20 марта!
#вопросы_с_собеседований
Что такое copy elision и когда становится возможным? Какие особенности для разных стандартов?
copy elision - это техника оптимизации компилятора в C++, которая позволяет устранить ненужные операции копирования или перемещения при возврате объектов из функций или инициализации объектов. Это позволяет компилятору оптимизировать создание и уничтожение временных объектов, в результате чего код становится более эффективным.
copy elision становится возможной в сценариях, определенных стандартом C++. Соответствующее положение стандарта называется правилом "as-if", которое позволяет компилятору оптимизировать программу до тех пор, пока она производит такое же наблюдаемое поведение, как и исходный код.
- C++98/03: copy elision не является обязательной, но разрешена в качестве оптимизации. RVO* и NRVO* - обычные оптимизации, выполняемые компиляторами. *(Return Value Optimization, Named Return Value Optimization)
- C++11: Правила copy elision были пересмотрены. RVO и NRVO стали обязательными в некоторых случаях. copy elision также может происходить при выбросе исключений.
- C++17: Правила исключения копирования были еще более смягчены. Именованные переменные могут быть созданы или присвоены без необходимости выполнения операции перемещения. Эта оптимизация называется "mandatory copy elision".
- C++20: Правила исключения копирования остались такими же, как и в C++17.
Важно отметить, что хотя копирование является широко поддерживаемой оптимизацией, оно все еще зависит от реализации компилятором. Компиляторы могут иметь различное поведение или ограничения в отношении copy elision. Поэтому её использование для оптимизации поведения или производительности может быть непереносимым в различных компиляторах или версиях.
Что такое copy elision и когда становится возможным? Какие особенности для разных стандартов?
copy elision становится возможной в сценариях, определенных стандартом C++. Соответствующее положение стандарта называется правилом "as-if", которое позволяет компилятору оптимизировать программу до тех пор, пока она производит такое же наблюдаемое поведение, как и исходный код.
- C++98/03: copy elision не является обязательной, но разрешена в качестве оптимизации. RVO* и NRVO* - обычные оптимизации, выполняемые компиляторами. *(Return Value Optimization, Named Return Value Optimization)
- C++11: Правила copy elision были пересмотрены. RVO и NRVO стали обязательными в некоторых случаях. copy elision также может происходить при выбросе исключений.
- C++17: Правила исключения копирования были еще более смягчены. Именованные переменные могут быть созданы или присвоены без необходимости выполнения операции перемещения. Эта оптимизация называется "mandatory copy elision".
- C++20: Правила исключения копирования остались такими же, как и в C++17.
Важно отметить, что хотя копирование является широко поддерживаемой оптимизацией, оно все еще зависит от реализации компилятором. Компиляторы могут иметь различное поведение или ограничения в отношении copy elision. Поэтому её использование для оптимизации поведения или производительности может быть непереносимым в различных компиляторах или версиях.
#вопросы_с_собеседований
Как подсчитать количество элементов в std::list?
Чтобы подсчитать количество элементов в std::list, можно использовать следующие способы:
1. Вызвать метод size() самого списка. Он вернет количество элементов.
2. Проитерировать список циклом и считать элементы.
3. Воспользоваться алгоритмом std::distance, передав ему начало и конец списка.
4. Применить алгоритм std::count_if с условием, которое всегда истинно.
Как подсчитать количество элементов в std::list?
1. Вызвать метод size() самого списка. Он вернет количество элементов.
2. Проитерировать список циклом и считать элементы.
3. Воспользоваться алгоритмом std::distance, передав ему начало и конец списка.
4. Применить алгоритм std::count_if с условием, которое всегда истинно.