seniorcpp | Unsorted

Telegram-канал seniorcpp - Senior C++ Developer

13626

Изучаем C++. По вопросам сотрудничества: @adv_and_pr

Subscribe to a channel

Senior C++ Developer

std::data

std::data
это стандартная функция, которая возвращает указатель на недоступное буферное хранилище контейнера.
Она используется для непосредственного доступа к данным контейнера в памяти.

Основные применения:

— Прямой доступ к элементам массива или вектора для чтения/записи.

— Передача данных контейнера в функции, принимающие указатель в качестве аргумента.

— Выполнение операций, зависящих от порядка элементов в памяти.

— Оптимизации производительности за счёт избежания копирования.

— Низкоуровневые операции и интеграция с кодом на С.

— Итерация элементов в порядке хранения.

Читать полностью…

Senior C++ Developer

string at()

std::string::at()
это метод для доступа к символу строки по указанному индексу.
Принимает в качестве аргумента индекс символа типа size_t и возвращает ссылку на символ по данному индексу.

— Индексация начинается с 0 до size()-1.

— Выбрасывает исключение out_of_range, если индекс вне диапазона.

— Более безопасен, чем оператор [], так как проверяет границы.

Полезен в циклах для доступа к каждому символу, когда нужен безопасный доступ для чтения/записи конкретного символа.

#это_база

Читать полностью…

Senior C++ Developer

#вопросы_с_собеседований
Для чего нужен атрибут maybe_unused?

Атрибут [[maybe_unused]] используется для подавления предупреждений компилятора об неиспользуемых объектах.

Компилятор выдает предупреждение, если объект объявлен, но нигде не используется и чтобы избавиться от ложных предупреждений, например, когда объект используется только в отладочной сборке, применяют [[maybe_unused]].

Позволяет задать политику использования на уровне отдельных объектов и улучшает читаемость кода, явно объясняя причину неиспользования.

Читать полностью…

Senior C++ Developer

Разыскивается Senior C++/Qt Developer в команду разработчика офисного ПО МойОфис для участия в разработке кросс-платформенных редакторов.

Если ты хочешь работать в крупной российской ИТ-компании, имеешь опыт разработки С++ 11/14 от 3-х лет и разработка интерфейсов с использованием Qt - это то, чем тебе хотелось бы заниматься, - ты тот, кто нам нужен!

От нас: интересные задачи, возможность профессионального развития и обучения, удаленка или работа в офисе в историческом центре Питера и полный соцпакет с ДМС со стоматологией, оплачиваемым питанием и другими плюшками.

Подробности тут или в телеграм @VasilevaD

Читать полностью…

Senior C++ Developer

Алгоритм generate

std::generate
— это алгоритм из стандартной библиотеки C++, который используется для заполнения диапазона элементов сгенерированными значениями.

Принимает три параметра: начало диапазона, конец диапазона и функцию генерации. Функция генерации должна принимать неявный счетчик и возвращать очередное значение.
Для каждого элемента в заданном диапазоне будет вызываться функция генерации, и результат будет записан в этот элемент.

В этом примере std::generate совместно с генератором случайных чисел используется для быстрого заполнения вектора случайными значениями.

#это_база

Читать полностью…

Senior C++ Developer

absl::btree

absl::btree
— это реализация B-дерева в библиотеке Abseil для C++.
Преимущества absl::btree — это хранение данных в отсортированном порядке, быстрый поиск, вставка и удаление за O(logN), поддержка уникальных и неуникальных ключей, реализация set и map.

Применяется в задачах, где нужна высокопроизводительная структура данных с отсортированным доступом, например:

Реализация словарей и сортированных множеств;
Для хранения данных в базах данных;
В поисковых системах для индексов;
В структурах вроде кэша для быстрого доступа;
В задачах машинного обучения для хранения данных.

Читать полностью…

Senior C++ Developer

✅Бесплатный открытый урок по С++ от OTUS

Тема:
Почему в C++ 13 способов передать параметр в функцию?
Дата: 22 августа, 20:00
Преподаватель: Павел Филонов, Ex-Data Science Manager в Kaspersky

Урок пройдёт в рамках курса «Специализация С++ Developer» от OTUS

🔹Что будет на занятии:

- синтаксис передачи параметров в функции;
- константы, указатели, ссылки, умные указатели, lvalue, rvalue, forward reference;
- практические советы по объявлению функций, основанные на C++ Core Guidelines.

🔸Чему вы научитесь:

- узнаете про разнообразие способов объявления параметров функции;
- сможете обоснованно выбирать, какой способ использовать в разных ситуациях.

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

♦️Регистрация: https://otus.pw/Kuz07/

Нативная интеграция. Информация о продукте www.otus.ru

Читать полностью…

Senior C++ Developer

Атрибут nodiscard

Атрибут nodiscard — это специальный атрибут-маркер, который указывает компилятору предупреждать при игнорировании возвращаемого значения функции или метода.

Он был добавлен в С++17 для улучшения качества кода, указывается перед объявлением функции или метода и информирует компилятор, что возвращаемое значение не должно игнорироваться.
Позволяет избежать логических ошибок при игнорировании важных результатов функции.

В этом примере функция getResult() помечена атрибутом [[nodiscard]].
При вызове getResult() без использования возвращаемого значения компилятор выдаст предупреждение об игнорировании результата.

Читать полностью…

Senior C++ Developer

std::size

std::size
это функция из стандартной библиотеки C++, которая возвращает размер контейнера или массива.

Она определена в заголовочном файле <iterator>, работает со всеми стандартными контейнерами (vector, deque, list, array и др.) и с массивами всех типов, позволяя получить размер контейнера или массива в runtime.

#это_база

Читать полностью…

Senior C++ Developer

insert_or_assign

insert_or_assign
это функция из стандартной библиотеки языка C++, добавленная в C++17. Она используется для вставки элемента в ассоциативный контейнер (например, std::map) или обновления значения элемента, если ключ уже существует.

Преимущества перед operator[]:

— Более безопасна, так как проверяет существование элемента.
— Избавляет от лишнего кода для проверки наличия ключа.

Читать полностью…

Senior C++ Developer

#вопросы_с_собеседований
Почему std::make_pair больше не нужна?

В новых стандартах C++ она утратила актуальность по нескольким причинам:

— Появились инициализаторы со скобками {} для создания std::pair напрямую.
— Для вставки в контейнеры теперь есть функция emplace(), которая конструирует элемент прямо на месте.
— Можно использовать агрегатную инициализацию.
— Инициализаторы из C++17 позволяют сразу указывать ключ и значение.

Читать полностью…

Senior C++ Developer

На языке C++ можно создавать с нуля самые разные программы: от беспилотных автомобилей и робототехники до веб-браузеров, микроконтроллеров, серверов и видеоигр. Если вы когда-нибудь мечтали менять мир, то проще всего начать делать это в цифровом виде и на этом языке. А ещё С++ даёт крепкую базу знаний. Выучив его, вам будет проще освоить любой смежный инструмент.

Обучиться языку можно на курсе Яндекс Практикума «Разработчик C++».

На курсе вы:
• научитесь писать эффективный код;
• разберётесь в стандартной библиотеке C++;
• начнёте работать с Git, IDE и компиляторами;
• познакомитесь с базовыми алгоритмами и структурами данных;
• создадите действующие сервисы и добавите 3+ проекта в портфолио.

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

Пройдите первый бесплатный урок

Читать полностью…

Senior C++ Developer

msg_ptr (message pointer)

msg_ptr это указатель на структуру или класс, который содержит данные сообщения. Обычно это просто указатель void*.
Он используется в многопоточном программировании для передачи сообщений между потоками.

Использование указателей вместо копирования данных позволяет избежать лишних копий и ускорить передачу сообщений между потоками.

Если запустить код из примера, можно увидеть, что данные успешно передаются между потоками через очередь с использованием указателей на сообщения.

Читать полностью…

Senior C++ Developer

std::tuple

std::tuple - это шаблонный класс, представляющий собой фиксированный набор элементов разных типов. Проще говоря, удобный инструмент для упаковки данных разных типов

Элементы tuple инициализируются в конструкторе и доступны только для чтения после создания.

tuple часто используется в комбинации с tie для присваивания кортежа переменным.

#это_база

Читать полностью…

Senior C++ Developer

Куда делись все безработные С++ разработчики?

Если ты один из них, то с вероятностью в 99.99% ты просто еще не подписан на С++ Работа Вакансии. Это же те  самые каналы, где работу умудряются найти даже самые зеленые джуны.
Я уже молчу про мидлов, которые тут просто нарасхват!

Авторы канала сканируют рынок и отбирают самые вкусные вакансии на должность С++ разработчика.  

Всем новым подписчикам категорически рекомендуется чекнуть в канале посты-закрепы с подборкой 20 нейросетей, которые помогут вам существенно упростить поиск новой работы.

С++ Работа Вакансии  – «мастхэв-канал» для каждого начинающего С++ Разработчика!

Читать полностью…

Senior C++ Developer

🦾 Пройди тест по C++ 🦾

Проверь свои знания. Сможешь сдать — пройдёшь на продвинутый курс "C++ Developer. Professional" от OTUS по специальной цене.

После 5 месяцев обучения:
- Научишься прикладному применению стандартов C++11 / C++14 / C++17.
- Освоишь асинхронное и многопоточное программирование.
- Получишь глубокое представление о шаблонной магии и паттернах проектирования.
В конце обучения тебя ждет проектная работа.

🎫Курс можно приобрести в рассрочку

👉 ПРОЙТИ ТЕСТ: https://otus.pw/NSb0/

Нативная интеграция. Информация о продукте www.otus.ru

Читать полностью…

Senior C++ Developer

Лямбда-выражения

Лямбда-выражения (lambda) — это безымянные функции, которые можно использовать для передачи поведения или сравнения.
Объявляются как {body;}, в квадратных скобках указываются аргументы, в фигурных — тело.

Полезны для задания функций сравнения, например в алгоритмах sort(), когда нужно быстро передать функциональность, не создавая отдельную функцию.
Поддерживают захват по значению [=] и по ссылке [&].
Можно сохранить в переменной с помощью auto.

#это_база

Читать полностью…

Senior C++ Developer

#вопросы_с_собеседований
Для чего нужен атрибут fallthrough?

Атрибут [[fallthrough]] используется для явного указания того, что в конструкции switch нужно пропустить break в конце case и перейти к выполнению следующего case.

По умолчанию в С++17 и новее переход между case без break приводит к ошибке компиляции и чтобы сохранить старое поведение и разрешить переход, нужно добавить [[fallthrough]].

Это улучшает читаемость кода, явно указывая на отсутствие break и помогает избежать случайного отсутствия break, когда разработчик забыл его добавить.
[[fallthrough]] также полезен при рефакторинге старого кода с switch в современный стандарт С++.

Читать полностью…

Senior C++ Developer

#вопросы_с_собеседований
Может ли inline-функция быть рекурсивной?

Поскольку компилятор просто встраивает код inline-функции в место вызова, не имеет значения, является ли эта функция рекурсивной или нет. Компилятор будет просто копировать один и тот же код функции при каждом рекурсивном вызове.

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

Читать полностью…

Senior C++ Developer

std::clamp

std::clamp
это функция из стандартной библиотеки, которая позволяет ограничить значение в заданном диапазоне.

Функция принимает значение, нижнюю и верхнюю границы и возвращает исходное значение, если оно входит в диапазон, или же возвращает ближайшую границу, если значение вне диапазона.

Применяется для:

— Ограничения числовых значений в заданных пределах.
— Обработки данных из недостоверных источников.
— Защиты от переполнения/обрезания данных.
— Нормализации данных в ML и компьютерном зрении.
— Реализации игровой логики в движках.
— Обработки аудио- и видео- сигналов.

Читать полностью…

Senior C++ Developer

#вопросы_с_собеседований
Что такое сложность алгоритма и от чего она зависит?

Сложность алгоритма - это количественная характеристика его эффективности, которая показывает, как зависят затраты ресурсов (времени, памяти) от размера входных данных.

Сложность зависит от:

— Объема операций, которые алгоритм выполняет при обработке данных.
— Количества итераций циклов, рекурсивных вызовов.
— Зависимости числа операций от размера входных данных.
— Операций внутри вложенных циклов и структур.

Чем быстрее растёт сложность функции с ростом входных данных, тем менее эффективен алгоритм.

Читать полностью…

Senior C++ Developer

Функция strrchr()

Функция strrchr(), объявленная в заголовочном файле <cstring>, ищет последнее вхождение указанного символа в строке и возвращает указатель на это вхождение.

Принимает два параметра: указатель на строку и символ для поиска, возвращает указатель на последнее вхождение символа в строке. Если символ не найден, возвращается нулевой указатель.

Полезна, когда нужно найти последнее вхождение разделителя, например точки в URL.

В примере функция strrchr() возвращает указатель на найденный символ, мы вычитаем из этого указателя начало строки, чтобы получить позицию последней точки.

#это_база

Читать полностью…

Senior C++ Developer

Видим цель, не видим препятствий: зовем на курс по архитектуре приложений 🧑🏼‍💻

Работа в проектах, где в коде не разобраться, похожа на путешествие по горной тропе без карты. Возможно, этот островок кода выглядит не очень надежно и его можно удалить? Бам! — и всё, что могло упасть, упало.

Ситуация гипотетическая, сравнения взяты из реальной жизни — а мы хотели подвести к важности грамотного, выстроенного кода. Учим, как делать такую красоту, на курсе по архитектуре приложений, поток стартует 18 сентября.

Узнать программу вы можете
по ссылке ⚡️

Спикеры курса:
✔️Егор Лукьянов, Senior software engineer
Более 15 лет в IT, отвечает за архитектуру платформы анализа больших данных. Руководит бэкенд-разработкой на Python.
✔️Александр Вагнер, Solution Architect & co-founder в TorrowTechnologies
Более 8 лет в IT, строит с нуля компанию и платформу Torrow. Имеет богатый опыт создания и разработки high-load веб-сервисов и приложений.

Записаться на поток с 18 сентября вы можете на нашем сайте

Читать полностью…

Senior C++ Developer

Не хочешь проср#ть собес по алгоритмам?

Если ты давно откладывал алгоритмы и не знаешь, с чего начать — это твой шанс⭐️

71% наших учеников уже получили офферы в крупные IT-компании. Хочешь стать следующим?

Помогаем заботать алгоритмы на задачах из собеседований в Яндекс, Тинькофф, ВК на курсе:
"АЛГОРИТМЫ: ROADMAP для получения офферов в IT!"

☝️Он лучше аналогов, и вот почему:

➡️Структурная подача материала. Информация собрана за вас, вам не нужно искать по всему интернету ответы на вопросы. Плюс есть куратор и препод, у которого можно спросить все, что не понятно.

➡️ Много практики. 100+ задач, которые вы решите сами. За счет постепенного роста сложности задач, вы выработаете большую уверенность в том, что сможете решать алгоритмы.

➡️Каждую неделю вы будете разбирать задачи из СОБЕСЕДОВАНИЙ. Научитесь уверенно решать задачки medium и hard на Leetcode и пройдете собеседования.

➡️У вас будет личный куратор-трекер, который напоминает о ДЗ. Вы получите МОТИВАЦИЮ изучить алгоритмы.

➡️Поддержка от сообщества единомышленников. Для участников будет групповой чат. Благодаря коммьюнити и общению вы получите удовольствие от процесса, а в этом состоянии вы максимально продуктивны.

Первому человеку, который пройдет весь курс до конца первым — полностью возместим деньги за обучение💲

🔥 До 18.08 можно присоединиться к 5 потоку с самой большой скидкой в году —20%.

✔️Оставляй заявку на бесплатную консультацию, где мы вместе с экспертом составим твой персональный RoadMap развития по алгоритмам:

🌐https://clck.ru/35LchU

Читать полностью…

Senior C++ Developer

Нашли подборку лучших курсов по С++ разработке!

Tutortop
— образовательный маркетплейс №1, где представлено свыше 5000 курсов от более чем 300 школ и все их можно сравнить по рейтингу, цене и отзывам, а еще купить дешевле, чем напрямую 🔥

Ребята из tutortop собрали для вас подборку из лучших курсов по С++ по мнению их пользователей:

Разработчик С++ от Нетологии. Рейтинг 4.8 из 5.
Скидка 50% по промокоду TUTORTOP50 до 18.08🎁

Менеджмент IT-проектов от МИПО. Рейтинг 4.8 из 5.
Скидка 10% по промокоду TUTORTOP до 18.08🎁

Геймплей-программирование от XYZ School. Рейтинг 4.7 из 5.
Скидка 10% по промокоду TUTORTOP до 18.08🎁

Чтобы подробнее узнать про обучение или купить его, введите промокод TUTORTOP по ссылке на онлайн-курс по C++, который вам интересен.

⚡️Учиться выгоднее с tutortop!

Читать полностью…

Senior C++ Developer

try_emplace

Метод try_emplace() в C++17 - это один из способов вставки элемента в ассоциативный контейнер (например, map или unordered_map).

Позволяет вставить новый элемент по ключу, если такого ключа еще нет в контейнере.
Если ключ уже существует, то ничего не происходит.

Преимущества:
- Более эффективно, чем insert, т.к. сразу конструирует элемент на месте.
- Не делает лишних копирований или перемещений.
- Позволяет избежать ненужного перезаписывания элемента по существующему ключу.

Читать полностью…

Senior C++ Developer

Функция before_begin()

Метод before_begin() контейнера forward_list возвращает итератор, указывающий на позицию перед первым элементом списка.

Это полезно, например, чтобы вставить элемент в начало списка.

Работает за константное время O(1), т.к. получает ссылку на начало списка.

#это_база

Читать полностью…

Senior C++ Developer

#вопросы_с_собеседований
Что такое union?

Union - это специальный класс, который позволяет хранить данные разных типов в одной области памяти.
Основные характеристики:

- Объявляется с ключевым словом union.
- В каждый момент активно только одно поле.
- Размер равен наибольшему полю.
- Позволяет интерпретировать одну область памяти разными способами.
- Экономит память.
- Доступ к полям как в обычном классе.

Читать полностью…

Senior C++ Developer

#вопросы_с_собеседований
Что такое рефакторинг?

Рефакторинг - это процесс изменения внутренней структуры программы без изменения ее внешнего поведения.

Рефакторинг кода может применяться в следующих ситуациях:

- Улучшение читаемости и понятности кода.
- Оптимизация производительности.
- Устранение дублирования кода.

Рефакторинг особенно важен при работе над большими проектами, где код многократно изменяется и расширяется. Он позволяет поддерживать кодбейз чистым, современным и масштабируемым.

Читать полностью…

Senior C++ Developer

Ключевое слово const

Ключевое слово const используется для создания констант и неизменяемых объектов.

- Const для объявления переменных: запрещает изменение объекта после инициализации.

- Const указатели и ссылки: указатель или ссылка на константный объект. Нельзя изменить объект через них, только читать.

- Функции, возвращающие const значения: гарантируют, что функция не изменит объект.

- Const члены класса: нельзя изменить через объект класса.

- Const методы класса: не меняют члены класса. Часто применяются к getter-методам.

#это_база

Читать полностью…
Subscribe to a channel