Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month, 2 weeks ago
Узнаем версию C++
Можно использовать макрос __cplusplus
для определения версии C++. Например, если препроцессор увидит значение __cplusplus
, равное 199711L, это означает, что используется C++98; значение 201103L указывает на C++11 и так далее.
➡️ @cpp_geek
Метод difftime()
Метод difftime()
используется для вычисления разницы между двумя значениями времени в секундах.
➡️ @cpp_geek
В чем различия между dynamic_cast и reinterpret_cast?
Правильный ответ может звучать так:
Динамическое приведение — это безопасное приведение по иерархии наследования, в том числе и для виртуального наследования. Проводит преобразование типа, предварительно убедившись (с помощью RTTI), что объект expression_from в действительности является объектом типа type_to. Если нет: для указателей возвращает NULL.
При reinterpret_cast результат не гарантирован, проверки не осуществляются.
Ограничения на expression_from: порядковый тип (логический, символьный, целый, перечисляемый), указатель, ссылка.
Ограничения на type_to: для порядкового типа или указателя — порядковый тип или указатель. Для ссылки — ссылка.
➡️ @cpp_geek
Алгоритм merge
Объединяет две отсортированные последовательности, ограниченные диапазонами [first1,last1)
и [first2,last2)
, в единую отсортированную последовательность, начинающуюся с позиции result.
Шаблон:
merge (initer1 beg1, initer1 end1,
initer2 beg2, initer2 end2,
outiter res).
➡️ @cpp_geek
В чем отличие overload и override?
Ответ:
overload - это перегрузка, два одинаковых имени функций с разными принимаемыми аргументами, override - это переопределение (с помощью таблицы виртуальных функций), изменение поведения функции в выведенном классе ( с помощью механизма виртуальных функций).
Алгоритм reverse_copy
Алгоритм копирует элементы из заданного диапазона, но в обратном порядке.
Принимает три параметра. Первые два параметра — это диапазон копируемых элементов, а третий параметр — начальная точка, из которой элементы копируются в обратном порядке.
➡️ @cpp_geek
Что не так в этом отрывке кода на С++?
operator int() const {
return *this;
}
Выше приведен полный код для проверки.
Ответ:
Он скомпилируется, хотя некоторые компиляторы могут кинуть warning, сразу же объясняющий в чём суть ошибки. Но вот при запуске вы словите stack overflow. Дело в том, что operator int будет пытаться привести возвращаемое значение к типу int, что вполне можно сделать, ведь для текущего объекта у нас есть замечательный operator int, который это и делает. Т.е. функцию вызовет сама себя и будет продолжать это делать рекурсивно, пока не переполнится стек.
➡️ @cpp_geek
Преобразование списка в массив в C++
Простое решение состоит в том, чтобы использовать цикл for на основе диапазона для обхода списка и, один за другим, добавлять каждый элемент в следующий доступный индекс в массиве.
➡️ @cpp_geek
Примеры C++ кода до и после Ranges
Измените несортированный диапазон, чтобы он сохранял только уникальные значения, но в обратном порядке.
➡️ @cpp_geek
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month, 2 weeks ago