es
Feedback
C++ geek

C++ geek

Ir al canal en Telegram

Учим C/C++ на примерах

Mostrar más
3 611
Suscriptores
Sin datos24 horas
-17 días
-3630 días
Archivo de publicaciones
Бесплатное IT-образование в 2024 Отобрали для вас полезные телеграм-каналы, которые помогут освоить программирование и другие IT-направления Выбирайте нужное и подписывайтесь: 👩‍💻 С/С++: @Cpportal 📱 GitHub: @git_developer 🤓 Книги айти: @portalToIT 👩‍💻 Golang: @juniorGolang 👩‍💻 PHP: @PHPortal 👩‍💻 Моб. разработка: @MobDev 👩‍💻 Java: @Java_Iibrary 👩‍💻 Frontend: @FrontendPortal ⚙️ Backend: @BackendPortal 👩‍💻 Python: @PythonPortal 👩‍💻 C#: @KodBlog 🖥 Базы Данных & SQL: @SQL 👩‍💻 Разработка игр: @GameDevgx 👩‍💻 DevOps: @loose_code 🖥 Data Science: @DataSciencegx 🤔 Хакинг & ИБ: @cybersecinform 🐞 Тестирование: @QAPortal 📱 Маркетинг: @MarketingPortal 🖥 Дизайн: @PortalToDesign ➡️ Сохраняйте себе, чтобы не потерять

Сравниваем 2 строки на одинаковые буквы Для сравнения двух строк на одинаковые буквы можно использовать стандартную функцию s
Сравниваем 2 строки на одинаковые буквы Для сравнения двух строк на одинаковые буквы можно использовать стандартную функцию strcmp() из библиотеки. В данном примере две строки "hello" и "holle" сравниваются на одинаковые буквы. Функция strcmp() возвращает 0, если строки совпадают, и любое другое число, если строки не совпадают. Если строки содержат одинаковые буквы, выводится сообщение "Строки содержат одинаковые буквы", иначе - "Строки содержат разные буквы". ➡️ @cpp_geek

Что за ошибка в приведенном ниже коде и как ее исправить? Последним аргументом memset должен быть sizeof(*bar), а не sizeof(b
Что за ошибка в приведенном ниже коде и как ее исправить? Последним аргументом memset должен быть sizeof(*bar), а не sizeof(bar). sizeof(bar) вычисляет размер bar (то есть самого указателя), а не размер структуры, на которую указывает bar. Поэтому код можно исправить, используя sizeof(*bar) в качестве последнего аргумента вызова memset. ➡️ @cpp_geek

В чем проблема следующего фрагмента? Из спецификации (C++11 §5.3.5/3): Если статический тип подлежащего удалению объекта отли
В чем проблема следующего фрагмента? Из спецификации (C++11 §5.3.5/3): Если статический тип подлежащего удалению объекта отличается от его динамического типа, статический тип должен быть базовым классом динамического типа подлежащего удалению объекта и иметь виртуальный деструктор или поведение undefined. ➡️ @cpp_geek

PIMPL (Pointer to Implementation) PIMPL — это паттерн программирования, который позволяет скрыть внутреннюю реализацию класса
PIMPL (Pointer to Implementation) PIMPL — это паттерн программирования, который позволяет скрыть внутреннюю реализацию класса от клиента, а также упростить перекомпиляцию кода и улучшить производительность. Суть PIMPL-паттерна заключается в том, что все данные хранятся в отдельном класс, а в основном хранится только указатель на этот вспомогательный класс, в котором осуществляется вся работа с данными. В данном примере пользователь класса MyObject не видит внутреннюю реализацию объекта, что позволяет добавлять/удалять поля без необходимости изменять интерфейс класса. Работа с внутренними данными осуществляется через методы класса Impl, которые вызываются в функциях-членах класса MyObject. ➡️ @cpp_geek

Есть ли преимущества одного фрагмента кода перед другим? Если да, то какие? Хотя оба варианта выполняют одно и то же, второй
Есть ли преимущества одного фрагмента кода перед другим? Если да, то какие? Хотя оба варианта выполняют одно и то же, второй вариант лучше с точки зрения производительности. Это связано с тем, что оператор постинкремента itr++ дороже, чем оператор предварительного инкремента ++itr. Базовая реализация оператора постинкремента создает копию элемента перед его увеличением, а затем возвращает копию. Тем не менее, многие компиляторы автоматически оптимизируют первый вариант, преобразовывая его во второй. ➡️ @cpp_geek

std::async В C++ std::async — это шаблон функции, предоставляемый стандартной библиотекой. Он используется для асинхронного в
std::async В C++ std::async — это шаблон функции, предоставляемый стандартной библиотекой. Он используется для асинхронного выполнения функции или вызываемого объекта и получения объекта future, представляющего результат вычислений. Функция std::async создает новый поток или использует существующий поток из пула потоков реализации для выполнения поставленной задачи. Она возвращает объект std::future, который можно использовать для получения результата или статуса вычисления. В этом примере функция AddNumbers выполняется асинхронно с использованием std::async. Она принимает два целых числа в качестве аргументов и возвращает их сумму. Функция std::async вызывается с помощью AddNumbers и аргументов 5 и 10. Функция std::async возвращает объект std::future, который представляет собой результат вычисления. Вызывая функцию get() на объекте future, мы блокируем выполнение до завершения вычислений и получаем результат. ➡️ @cpp_geek

Алгоритм stable_partition Упорядочивает последовательность, определенную параметрами start и end, так, чтобы все элементы, дл
Алгоритм stable_partition Упорядочивает последовательность, определенную параметрами start и end, так, чтобы все элементы, для которых предикат возвращал true, предшествовали тем, для которых предикат возвращает false. Разметка стабильная. Это означает, что относительный порядок последовательности сохраняется. ➡️ @cpp_geek

Можно ли в C++ умножать или делить целое значение на степени двойки, не используя операций "*" или "/"? Это можно делать в лю
Можно ли в C++ умножать или делить целое значение на степени двойки, не используя операций "*" или "/"? Это можно делать в любом языке, где есть побитовый сдвиг. Умножению значения x на 2, например, соответствует операция x > 2. ➡️ @cpp_geek

Оператор присваивания ( = ), строго говоря, является бинарным оператором. Его объявление идентично объявлению любого другого
Оператор присваивания ( = ), строго говоря, является бинарным оператором. Его объявление идентично объявлению любого другого бинарного оператора со следующими исключениями: ✅ Он должен быть нестатической функцией-членом. ✅ Он не наследуется производными классами. ✅ Компилятор может создать функцию operator = по умолчанию для типов классов, если она не существует. В примере показано, как объявить оператор присваивания. ➡️ @cpp_geek

Алгоритм is_sorted_until Используется для определения первого несортированного элемента в диапазоне [first, last). Он возвращ
Алгоритм is_sorted_until Используется для определения первого несортированного элемента в диапазоне [first, last). Он возвращает итератор к первому несортированному элементу в диапазоне, поэтому все элементы между первым и возвращенным итератором сортируются. Его также можно использовать для подсчета общего количества отсортированных элементов в диапазоне. Он определяется внутри файла заголовка. Если весь диапазон отсортирован, он вернет итератор, указывающий на последний. ➡️ @cpp_geek

Просмотр все файлов в папке с помощью C++ Для того, чтобы просмотреть все файлы в папке с помощью C++, можно использовать фун
Просмотр все файлов в папке с помощью C++ Для того, чтобы просмотреть все файлы в папке с помощью C++, можно использовать функцию std::filesystem::directory_iterator(). Данная функция позволяет перебирать все файлы в указанной директории. В данном примере мы получаем текущую директорию с помощью функции fs::current_path(), а затем проходим по всем файлам в этой директории с помощью цикла for. Внутри цикла мы выводим путь к каждому файлу с помощью метода entry.path(). ➡️ @cpp_geek

Получить текущее время и дату в C++ Начиная с C++11, стандартным решением для получения текущего времени и даты в C++ являетс
Получить текущее время и дату в C++ Начиная с C++11, стандартным решением для получения текущего времени и даты в C++ является использование библиотеки chrono. Мы можем получить текущее время с помощью std::chrono::system_clock::now() от hrono.h хедера и преобразовать его в std::time_t тип (время от эпохи). Затем преобразовать std::time_t на местное календарное время std::ctime в Www Mmm dd hh:mm:ss yyyy формате, как показано на картинке. ➡️ @cpp_geek

Удаление всех вхождений элемента в массив В этом методе сдвиньте нецелевой элемент в левую сторону. ⚫️Проверьте, является ли
Удаление всех вхождений элемента в массив В этом методе сдвиньте нецелевой элемент в левую сторону. ⚫️Проверьте, является ли текущий элемент целевым элементом или нет. ⚫️Если это целевой элемент, увеличьте переменную cnt. ⚫️После этого элемента все нецелевые элементы сдвинутся влево с промежутком (n-cnt). Временная сложность: O(n) Сложность пространства: O(1) На картинке приведена программа на C ++ для удаления всех вхождений элемента из массива с использованием оптимизированного подхода. ➡️ @cpp_geek

Что такое хеш-функция? Объясните на примере Хеш-функция - это функция, которая принимает на вход некоторые данные и возвращае
Что такое хеш-функция? Объясните на примере Хеш-функция - это функция, которая принимает на вход некоторые данные и возвращает фиксированный размер выходных данных, называемый хешем. Такие функции широко используются в C++ для решения задач с поиском и индексированием данных. Они позволяют быстро находить элементы в массивах или хранилищах данных. Рассмотрим применение на примере кода выше: Мы создаем объект хеш-функции для строки и используем его для вычисления хеша для строки "Hello, world!". Результатом выполнения программы будет вывод на экран хеш-значения для этой строки. ➡️ @cpp_geek

Узнаем версию C++ Можно использовать макрос __cplusplus для определения версии C++. Например, если препроцессор увидит значен
Узнаем версию C++ Можно использовать макрос __cplusplus для определения версии C++. Например, если препроцессор увидит значение __cplusplus, равное 199711L, это означает, что используется C++98; значение 201103L указывает на C++11 и так далее. ➡️ @cpp_geek

Метод difftime() Метод difftime() используется для вычисления разницы между двумя значениями времени в секундах. ➡️ @cpp_geek
Метод difftime() Метод difftime() используется для вычисления разницы между двумя значениями времени в секундах. ➡️ @cpp_geek

В чем различия между dynamic_cast и reinterpret_cast? Правильный ответ может звучать так: Динамическое приведение — это безопасное приведение по иерархии наследования, в том числе и для виртуального наследования. Проводит преобразование типа, предварительно убедившись (с помощью RTTI), что объект expression_from в действительности является объектом типа type_to. Если нет: для указателей возвращает NULL. При reinterpret_cast результат не гарантирован, проверки не осуществляются. Ограничения на expression_from: порядковый тип (логический, символьный, целый, перечисляемый), указатель, ссылка. Ограничения на type_to: для порядкового типа или указателя — порядковый тип или указатель. Для ссылки — ссылка. ➡️ @cpp_geek

Узнаем размер файла с помощью C++ В этом примере мы открываем файл example.txt с помощью ifstream, перемещаем указатель на ко
Узнаем размер файла с помощью C++ В этом примере мы открываем файл example.txt с помощью ifstream, перемещаем указатель на конец файла с помощью функции seekg, а затем получаем текущую позицию (размер файла) с помощью функции tellg. Результат выводится на экран. ➡️ @cpp_geek

Алгоритм upper_bound Он возвращает итератор, указывающий на первый элемент в диапазоне [first, last), который больше значения
Алгоритм upper_bound Он возвращает итератор, указывающий на первый элемент в диапазоне [first, last), который больше значения, или last, если такой элемент не найден. Элементы в диапазоне должны быть уже отсортированы или, по крайней мере, разделены по значению val. ➡️ @cpp_geek