assert()
Аpгyмент
Когда expression ложно (ноль), assert вызывает abort, предварительно выведя сообщение, показывающие, какая и где произошла ошибка:
assertion failed: expression, file filename, line lineno
➡️ @cpp_geek
assert()
- макроопределение для вывода отладочных диагностических сообщений. Используется для включения в программу диагностических операторов и принимает один аргумент (int expression).Аpгyмент
expression
должен быть выражением, которое принимает значение истина (не ноль), если программа работает так, как вы предполагаете.Когда expression ложно (ноль), assert вызывает abort, предварительно выведя сообщение, показывающие, какая и где произошла ошибка:
assertion failed: expression, file filename, line lineno
➡️ @cpp_geek
Ключевое слово typedef
Это ключевое слово, которое создает псевдоним для существующего типа данных.
По соглашению имена
Это помогает указать, что идентификатор представляет собой тип, а не переменную или функцию, а также помогает предотвратить конфликты имен с другими типами идентификаторов.
➡️ @cpp_geek
Это ключевое слово, которое создает псевдоним для существующего типа данных.
По соглашению имена
typedef
объявляются с использованием суффикса "_t
". Это помогает указать, что идентификатор представляет собой тип, а не переменную или функцию, а также помогает предотвратить конфликты имен с другими типами идентификаторов.
➡️ @cpp_geek
Что выведет код сверху?
Ответ: “Constructor called” 5 раз и затем “Destructor called” 5 раз.
В приведенной выше программе мы сначала инициировали переменные с пятью указателями, используя ключевое слово new, следовательно, после этого будет вызван конструктор
➡️ @cpp_geek
Ответ: “Constructor called” 5 раз и затем “Destructor called” 5 раз.
В приведенной выше программе мы сначала инициировали переменные с пятью указателями, используя ключевое слово new, следовательно, после этого будет вызван конструктор
fives time
, поскольку мы используем delete[]
(используется для удаления нескольких объектов) для удаления переменных, следовательно, все созданные пять объектов будут уничтожены и, следовательно, будет вызван деструктор five times
.➡️ @cpp_geek
В чем различия между dynamic_cast и reinterpret_cast?
Правильный ответ может звучать так:
Динамическое приведение — это безопасное приведение по иерархии наследования, в том числе и для виртуального наследования. Проводит преобразование типа, предварительно убедившись (с помощью RTTI), что объект expression_from в действительности является объектом типа type_to. Если нет: для указателей возвращает NULL.
При reinterpret_cast результат не гарантирован, проверки не осуществляются.
Ограничения на expression_from: порядковый тип (логический, символьный, целый, перечисляемый), указатель, ссылка.
Ограничения на type_to: для порядкового типа или указателя — порядковый тип или указатель. Для ссылки — ссылка.
➡️ @cpp_geek
Правильный ответ может звучать так:
Динамическое приведение — это безопасное приведение по иерархии наследования, в том числе и для виртуального наследования. Проводит преобразование типа, предварительно убедившись (с помощью RTTI), что объект expression_from в действительности является объектом типа type_to. Если нет: для указателей возвращает NULL.
При reinterpret_cast результат не гарантирован, проверки не осуществляются.
Ограничения на expression_from: порядковый тип (логический, символьный, целый, перечисляемый), указатель, ссылка.
Ограничения на type_to: для порядкового типа или указателя — порядковый тип или указатель. Для ссылки — ссылка.
➡️ @cpp_geek
Что такое хеш-функция? Объясните на примере
Хеш-функция - это функция, которая принимает на вход некоторые данные и возвращает фиксированный размер выходных данных, называемый хешем. Такие функции широко используются в C++ для решения задач с поиском и индексированием данных. Они позволяют быстро находить элементы в массивах или хранилищах данных.
Рассмотрим применение на примере кода выше:
Мы создаем объект хеш-функции для строки и используем его для вычисления хеша для строки "
➡️ @cpp_geek
Хеш-функция - это функция, которая принимает на вход некоторые данные и возвращает фиксированный размер выходных данных, называемый хешем. Такие функции широко используются в C++ для решения задач с поиском и индексированием данных. Они позволяют быстро находить элементы в массивах или хранилищах данных.
Рассмотрим применение на примере кода выше:
Мы создаем объект хеш-функции для строки и используем его для вычисления хеша для строки "
Hello, world!
". Результатом выполнения программы будет вывод на экран хеш-значения для этой строки.➡️ @cpp_geek
Удаление всех вхождений элемента в массив
В этом методе сдвиньте нецелевой элемент в левую сторону.
⚫️ Проверьте, является ли текущий элемент целевым элементом или нет.
⚫️ Если это целевой элемент, увеличьте переменную cnt.
⚫️ После этого элемента все нецелевые элементы сдвинутся влево с промежутком (n-cnt).
Временная сложность:
Сложность пространства:
На картинке приведена программа на C ++ для удаления всех вхождений элемента из массива с использованием оптимизированного подхода.
➡️ @cpp_geek
В этом методе сдвиньте нецелевой элемент в левую сторону.
Временная сложность:
O(n)
Сложность пространства:
O(1)
На картинке приведена программа на C ++ для удаления всех вхождений элемента из массива с использованием оптимизированного подхода.
➡️ @cpp_geek
Please open Telegram to view this post
VIEW IN TELEGRAM
Получить текущее время и дату в C++
Начиная с C++11, стандартным решением для получения текущего времени и даты в C++ является использование библиотеки chrono.
Мы можем получить текущее время с помощью
Затем преобразовать
➡️ @cpp_geek
Начиная с 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
Просмотр все файлов в папке с помощью C++
Для того, чтобы просмотреть все файлы в папке с помощью C++, можно использовать функцию
В данном примере мы получаем текущую директорию с помощью функции
➡️ @cpp_geek
Для того, чтобы просмотреть все файлы в папке с помощью C++, можно использовать функцию
std::filesystem::directory_iterator()
. Данная функция позволяет перебирать все файлы в указанной директории.В данном примере мы получаем текущую директорию с помощью функции
fs::current_path()
, а затем проходим по всем файлам в этой директории с помощью цикла for
. Внутри цикла мы выводим путь к каждому файлу с помощью метода entry.path()
.➡️ @cpp_geek
Алгоритм is_sorted_until
Используется для определения первого несортированного элемента в диапазоне [
Его также можно использовать для подсчета общего количества отсортированных элементов в диапазоне. Он определяется внутри файла заголовка. Если весь диапазон отсортирован, он вернет итератор, указывающий на последний.
➡️ @cpp_geek
Используется для определения первого несортированного элемента в диапазоне [
first
, last
). Он возвращает итератор к первому несортированному элементу в диапазоне, поэтому все элементы между первым и возвращенным итератором сортируются.Его также можно использовать для подсчета общего количества отсортированных элементов в диапазоне. Он определяется внутри файла заголовка. Если весь диапазон отсортирован, он вернет итератор, указывающий на последний.
➡️ @cpp_geek
Оператор присваивания
✅ Он должен быть нестатической функцией-членом.
✅ Он не наследуется производными классами.
✅ Компилятор может создать функцию operator = по умолчанию для типов классов, если она не существует.
В примере показано, как объявить оператор присваивания.
➡️ @cpp_geek
( = )
, строго говоря, является бинарным оператором. Его объявление идентично объявлению любого другого бинарного оператора со следующими исключениями:В примере показано, как объявить оператор присваивания.
➡️ @cpp_geek
Please open Telegram to view this post
VIEW IN TELEGRAM