💡 null pointer
В стандарте до C++11 нулевой указатель было просто определением (define). Главная проблема такого подхода в том что это просто define над int, проще говоря просто int
nullptr — появился в C++11. Это не настоящий указатель, это класс. Его нельзя привести к int. Можно присвоить только указателю
В стандарте до C++11 нулевой указатель было просто определением (define). Главная проблема такого подхода в том что это просто define над int, проще говоря просто int
nullptr — появился в C++11. Это не настоящий указатель, это класс. Его нельзя привести к int. Можно присвоить только указателю
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
🧨 Чем отличаются ссылки от указателей в С++
❗Указатели
• Указатель — это переменная, которая содержит адрес ячейки памяти
• Указатели могут быть нулевыми (nullptr), что означает, что они не указывают ни на какую конкретную область памяти
• Указатели могут быть изменены для указания на другую область памяти
• Указатели могут указывать на массивы элементов
• Указатели могут использоваться для динамического выделения памяти с помощью оператора new и освобождения памяти с помощью оператора delete
❗Ссылки
• Ссылка — это альтернативное имя для существующей переменной
• Ссылка обязательно должна быть инициализирована при объявлении и не может быть изменена, чтобы указывать на другой объект
• Ссылки не могут быть нулевыми, они всегда указывают на существующий объект
• Ссылки не могут указывать на массивы элементов
• Ссылки обычно используются в качестве аргументов функций для передачи данных по ссылке, что позволяет изменять исходные значения переменных
❗Указатели
• Указатель — это переменная, которая содержит адрес ячейки памяти
• Указатели могут быть нулевыми (nullptr), что означает, что они не указывают ни на какую конкретную область памяти
• Указатели могут быть изменены для указания на другую область памяти
• Указатели могут указывать на массивы элементов
• Указатели могут использоваться для динамического выделения памяти с помощью оператора new и освобождения памяти с помощью оператора delete
❗Ссылки
• Ссылка — это альтернативное имя для существующей переменной
• Ссылка обязательно должна быть инициализирована при объявлении и не может быть изменена, чтобы указывать на другой объект
• Ссылки не могут быть нулевыми, они всегда указывают на существующий объект
• Ссылки не могут указывать на массивы элементов
• Ссылки обычно используются в качестве аргументов функций для передачи данных по ссылке, что позволяет изменять исходные значения переменных
🔮 std::bitset
Шаблонный класс std::bitset предназначен для управления наборами битов, обеспечивая удобные методы для их установки, сброса и получения. Основная польза от него в том, что в нём можно компактно хранить булевы значения, не тратя на это целый байт, как при использовании обычного bool
Шаблонный класс std::bitset предназначен для управления наборами битов, обеспечивая удобные методы для их установки, сброса и получения. Основная польза от него в том, что в нём можно компактно хранить булевы значения, не тратя на это целый байт, как при использовании обычного bool
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
🔍 Что такое std::filesystem?
std::filesystem — одной из самых полезных библиотек в C++, добавленной в стандартную библиотеку начиная с C++17. Это библиотека, предоставляющая мощные инструменты для работы с файловой системой. С ее помощью вы можно создавать, копировать, перемещать и удалять файлы и директории
Создание директории
- std::filesystem::create_directories(path)
Удаление директории
- std::filesystem::remove(path) — пустой директории
- std::filesystem::remove_all(path) — директории вместе с файлами
Копирование
- std::filesystem::copy(path_from, path_to)
👉Документация
std::filesystem — одной из самых полезных библиотек в C++, добавленной в стандартную библиотеку начиная с C++17. Это библиотека, предоставляющая мощные инструменты для работы с файловой системой. С ее помощью вы можно создавать, копировать, перемещать и удалять файлы и директории
Создание директории
- std::filesystem::create_directories(path)
Удаление директории
- std::filesystem::remove(path) — пустой директории
- std::filesystem::remove_all(path) — директории вместе с файлами
Копирование
- std::filesystem::copy(path_from, path_to)
👉Документация
⚙️ Почему нужно использовать extern «C» в коде?
Ключевое слово extern «C» используется для указания компилятору C++ на использование соглашения о вызовах функций, аналогичного тому, что используется в языке C. Это необходимо, потому что ABI (Application Binary Interface) C++ отличается от ABI C
Ключевое слово extern «C» сообщает компилятору C++, что функции, объявленные внутри этого блока, должны использовать соглашение о вызове, аналогичное C. Это гарантирует, что компилятор C++ не будет применять к ним особенности C++ ABI, и они будут корректно вызываться из C++ кода
Ключевое слово extern «C» используется для указания компилятору C++ на использование соглашения о вызовах функций, аналогичного тому, что используется в языке C. Это необходимо, потому что ABI (Application Binary Interface) C++ отличается от ABI C
Ключевое слово extern «C» сообщает компилятору C++, что функции, объявленные внутри этого блока, должны использовать соглашение о вызове, аналогичное C. Это гарантирует, что компилятор C++ не будет применять к ним особенности C++ ABI, и они будут корректно вызываться из C++ кода
⚙️ Зачем нужен std:string_view?
std::string_view — легковесный способ работы с неизменяемыми последовательностями символов, представленными строками, без копирования их данных
std::string_view — это просто пара значений, указатель на последовательность и размер
❗Так как std::string_view не является владельцем данных, то если строка исчезнет, то никто не информирует, что std::string_view перестал быть валидным
‼️ Основная идея — это дёшево хранить и передавать строки
std::string_view — легковесный способ работы с неизменяемыми последовательностями символов, представленными строками, без копирования их данных
std::string_view — это просто пара значений, указатель на последовательность и размер
❗Так как std::string_view не является владельцем данных, то если строка исчезнет, то никто не информирует, что std::string_view перестал быть валидным
‼️ Основная идея — это дёшево хранить и передавать строки
🧨 Что такое семафор?
Семафор (semaphore) — примитив синхронизации, основанный на счётчике, который поддерживает атомарные операции: инкремент и декремент, при этом операция уменьшения для нулевого значения счётчика является блокирующей
Семафор представляет собой счетчик, который увеличивается или уменьшается потоками. Если счетчик равен нулю, потоки, пытающиеся уменьшить его значение, блокируются до тех пор, пока счетчик не станет больше нуля
В основном служат для построения более сложных механизмов синхронизации
Семафор (semaphore) — примитив синхронизации, основанный на счётчике, который поддерживает атомарные операции: инкремент и декремент, при этом операция уменьшения для нулевого значения счётчика является блокирующей
Семафор представляет собой счетчик, который увеличивается или уменьшается потоками. Если счетчик равен нулю, потоки, пытающиеся уменьшить его значение, блокируются до тех пор, пока счетчик не станет больше нуля
В основном служат для построения более сложных механизмов синхронизации
🧨 Что такое type_traits?
type_traits — это библиотека, которая предоставляет удобные средства для работы с типами во время компиляции. Она позволяет нам проверять и извлекать свойства типов, такие как const-квалификаторы, ссылочность, и многое другое
Документация
• cppreference
• microsoft
type_traits — это библиотека, которая предоставляет удобные средства для работы с типами во время компиляции. Она позволяет нам проверять и извлекать свойства типов, такие как const-квалификаторы, ссылочность, и многое другое
Документация
• cppreference
• microsoft
🔮 Что такое std::unique_lock?
❗std::unique_lock — это класс из стандартной библиотеки, который предоставляет механизм блокировки мьютекса (mutex) для обеспечения безопасности при доступе к общим данным из нескольких потоков
❗У std::unique_lock есть альтернатива — это std::lock_guard. Их главное отличие в том, что std::unique_lock можно заблокировать и разблокировать, а std::lock_guard разблокируется только при уничтожении
❗std::unique_lock — это класс из стандартной библиотеки, который предоставляет механизм блокировки мьютекса (mutex) для обеспечения безопасности при доступе к общим данным из нескольких потоков
❗У std::unique_lock есть альтернатива — это std::lock_guard. Их главное отличие в том, что std::unique_lock можно заблокировать и разблокировать, а std::lock_guard разблокируется только при уничтожении
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
😏 Зачем нужен виртуальный деструктор?
Виртуальные деструктор нужен только когда мы пользуемся наследованием. Он необходим в первую очередь, чтобы не было утечки памяти (memory leaks)
❗Если ключевое слово virtual к деструктору в предке, то и во всех потомках он тоже будет виртуальным
❗ Если есть хотя бы одна виртуальная функция в классе, то деструктор тоже нужно сделать виртуальным
Виртуальные деструктор нужен только когда мы пользуемся наследованием. Он необходим в первую очередь, чтобы не было утечки памяти (memory leaks)
❗Если ключевое слово virtual к деструктору в предке, то и во всех потомках он тоже будет виртуальным
❗ Если есть хотя бы одна виртуальная функция в классе, то деструктор тоже нужно сделать виртуальным
🔮 Статья об constexpr, consteval и constinit
Вышла небольшая обзорная статья о том, как constexpr, consteval, и constinit позволяют реализовывать компиляцию на этапе выполнения. Компиляция на этапе выполнения позволяет ускорить выполнение кода за счет выполнения расчетов на этапе компиляции, а не в рантайме
👉 Ссылка
Вышла небольшая обзорная статья о том, как constexpr, consteval, и constinit позволяют реализовывать компиляцию на этапе выполнения. Компиляция на этапе выполнения позволяет ускорить выполнение кода за счет выполнения расчетов на этапе компиляции, а не в рантайме
👉 Ссылка
-35% на полугодовой курс по алгоритмам!
🌟 Алгоритмы и структуры данных🌟
23 390 рублей35 990 рублей до 1 апреля
Курс для тех, кто хочет научиться работать с алгоритмами, подготовиться к собеседованию крупную IT-компанию и начать брать более сложные проекты.
🔥 Переходите и активируйте вводные занятия курса — https://proglib.io/w/5a72cc41
Вас ждут:
– 150 практических заданий и 47 видеолекций
– бессрочный доступ к обучению
– поддержка преподавателя в чате
А также очень харизматичный спикер из Яндекса 🙌🏻
🌟 Алгоритмы и структуры данных🌟
23 390 рублей
Курс для тех, кто хочет научиться работать с алгоритмами, подготовиться к собеседованию крупную IT-компанию и начать брать более сложные проекты.
🔥 Переходите и активируйте вводные занятия курса — https://proglib.io/w/5a72cc41
Вас ждут:
– 150 практических заданий и 47 видеолекций
– бессрочный доступ к обучению
– поддержка преподавателя в чате
А также очень харизматичный спикер из Яндекса 🙌🏻