Вывод double, также известный как самая сложная задача в компьютерных науках
Несколько лет назад я обнаружил этот вопрос на StackOverflow: как напечатать double с полной точностью, используя cout? Я был потрясен, увидев, насколько неправильными были большинство ответов, поэтому тогда я ответил сам. Недавно я снова наткнулся на него и решил написать этот пост в блоге, объясняя проблемы с некоторыми из лучших ответов.
Читать пост
Несколько лет назад я обнаружил этот вопрос на StackOverflow: как напечатать double с полной точностью, используя cout? Я был потрясен, увидев, насколько неправильными были большинство ответов, поэтому тогда я ответил сам. Недавно я снова наткнулся на него и решил написать этот пост в блоге, объясняя проблемы с некоторыми из лучших ответов.
Читать пост
🤖 Нейронки кодят за вас: 28 AI-сервисов в помощь разработчику
Расскажем о самых полезных новинках, которые помогут написать, отладить и протестировать код, а также ускорят процесс изучения нового стека и подготовку к собеседованию.
🔗 Основной сайт
🔗 Зеркало
Расскажем о самых полезных новинках, которые помогут написать, отладить и протестировать код, а также ускорят процесс изучения нового стека и подготовку к собеседованию.
🔗 Основной сайт
🔗 Зеркало
Что такое хеш-функция? Объясните на примере
Хеш-функция - это функция, которая принимает на вход некоторые данные и возвращает фиксированный размер выходных данных, называемый хешем. Такие функции широко используются в C++ для решения задач с поиском и индексированием данных. Они позволяют быстро находить элементы в массивах или хранилищах данных.
Рассмотрим применение на примере кода выше:
Мы создаем объект хеш-функции для строки и используем его для вычисления хеша для строки "Hello, world!". Результатом выполнения программы будет вывод на экран хеш-значения для этой строки.
#вопросы_с_собеседований
Хеш-функция - это функция, которая принимает на вход некоторые данные и возвращает фиксированный размер выходных данных, называемый хешем. Такие функции широко используются в C++ для решения задач с поиском и индексированием данных. Они позволяют быстро находить элементы в массивах или хранилищах данных.
Рассмотрим применение на примере кода выше:
Мы создаем объект хеш-функции для строки и используем его для вычисления хеша для строки "Hello, world!". Результатом выполнения программы будет вывод на экран хеш-значения для этой строки.
#вопросы_с_собеседований
⚖️ 4 основных алгоритма сравнения Git Diff: когда и какой алгоритм использовать
Обзор четырех алгоритмов git diff: Майерса, минимальный, «терпения» и гистограммный. Также приводятся наглядные примеры, чтобы можно было сравнить результат применения каждого алгоритма самостоятельно.
🔗 Основной сайт
🔗 Зеркало
Обзор четырех алгоритмов git diff: Майерса, минимальный, «терпения» и гистограммный. Также приводятся наглядные примеры, чтобы можно было сравнить результат применения каждого алгоритма самостоятельно.
🔗 Основной сайт
🔗 Зеркало
Задача
Для каждого из чисел второй последовательности найдите ближайшее к нему в первой.
В первой строке входных данных содержатся числа N и K (). Во второй строке задаются N чисел первого массива, отсортированного по неубыванию, а в третьей строке – K чисел второго массива. Каждое число в обоих массивах по модулю не превосходит 2⋅10**9.
Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. Если таких несколько, выведите меньшее из них.
#код
Для каждого из чисел второй последовательности найдите ближайшее к нему в первой.
В первой строке входных данных содержатся числа N и K (). Во второй строке задаются N чисел первого массива, отсортированного по неубыванию, а в третьей строке – K чисел второго массива. Каждое число в обоих массивах по модулю не превосходит 2⋅10**9.
Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. Если таких несколько, выведите меньшее из них.
#код
C++23: две дополнительные noexcept функции
в C++23 есть 125 изменений/исправлений/новых функций, и они постепенно освещаются в этом блоге.
Читать статью
в C++23 есть 125 изменений/исправлений/новых функций, и они постепенно освещаются в этом блоге.
Читать статью
Удаление всех вхождений элемента в массив
В этом методе сдвиньте нецелевой элемент в левую сторону.
🔨 Проверьте, является ли текущий элемент целевым элементом или нет.
🔨 Если это целевой элемент, увеличьте переменную cnt.
🔨 После этого элемента все нецелевые элементы сдвинутся влево с промежутком (n-cnt).
Временная сложность: O(n)
Сложность пространства: O(1)
На картинке приведена программа на C ++ для удаления всех вхождений элемента из массива с использованием оптимизированного подхода.
#код
В этом методе сдвиньте нецелевой элемент в левую сторону.
🔨 Проверьте, является ли текущий элемент целевым элементом или нет.
🔨 Если это целевой элемент, увеличьте переменную cnt.
🔨 После этого элемента все нецелевые элементы сдвинутся влево с промежутком (n-cnt).
Временная сложность: O(n)
Сложность пространства: O(1)
На картинке приведена программа на C ++ для удаления всех вхождений элемента из массива с использованием оптимизированного подхода.
#код
Изменение порядка параметров типа шаблона 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 формате, как показано на картинке.
#код
Начиная с 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 формате, как показано на картинке.
#код
Метод map::max_size()
map::max_size() — это встроенная функция C++ STL, которая возвращает максимальное количество элементов, которые может содержать контейнер map.
#код
map::max_size() — это встроенная функция C++ STL, которая возвращает максимальное количество элементов, которые может содержать контейнер map.
#код
Собеседование Middle C++
Запись собеседования на позицию мидла с фидбэком. Видео длится почти час, интервьюер успел задать интересные вопросы на разные темы — и про сериализацию, и про мув семантику.
Смотреть видео
Запись собеседования на позицию мидла с фидбэком. Видео длится почти час, интервьюер успел задать интересные вопросы на разные темы — и про сериализацию, и про мув семантику.
Смотреть видео
Просмотр все файлов в папке с помощью C++
Для того, чтобы просмотреть все файлы в папке с помощью C++, можно использовать функцию
В данном примере мы получаем текущую директорию с помощью функции
Для того, чтобы просмотреть все файлы в папке с помощью C++, можно использовать функцию
std::filesystem::directory_iterator()
. Данная функция позволяет перебирать все файлы в указанной директории.В данном примере мы получаем текущую директорию с помощью функции
fs::current_path()
, а затем проходим по всем файлам в этой директории с помощью цикла for
. Внутри цикла мы выводим путь к каждому файлу с помощью метода entry.path()
.#вопросы_с_собеседований
Как запретить наследовать класс?
Чтобы запретить наследование класса в C++, вы можете объявить класс как final.
Ключевое слово final указывает компилятору, что класс не может быть использован в качестве базового класса для других классов. Если попытаться наследовать от класса, объявленного как final, компилятор выдаст ошибку.
class Base final {
// ...
};
class Derived : public Base {
// ...
};
// Ошибка компиляции: класс Base объявлен как final
Как запретить наследовать класс?
Чтобы запретить наследование класса в C++, вы можете объявить класс как final.
Ключевое слово final указывает компилятору, что класс не может быть использован в качестве базового класса для других классов. Если попытаться наследовать от класса, объявленного как final, компилятор выдаст ошибку.
class Base final {
// ...
};
class Derived : public Base {
// ...
};
// Ошибка компиляции: класс Base объявлен как final
Функция isprint()
В C++ isprint() — это предопределенная функция, используемая для обработки строк и символов. cstring — это заголовочный файл, необходимый для строковых функций, а cctype — заголовочный файл, необходимый для символьных функций.
Эта функция используется для проверки того, содержит ли аргумент какие-либо печатные символы.
Подробнее можно почитать здесь.
#код
В C++ isprint() — это предопределенная функция, используемая для обработки строк и символов. cstring — это заголовочный файл, необходимый для строковых функций, а cctype — заголовочный файл, необходимый для символьных функций.
Эта функция используется для проверки того, содержит ли аргумент какие-либо печатные символы.
Подробнее можно почитать здесь.
#код
Возможности Rust, которые нужны в C++ — Дэвид Санкель — CppNow
По многим оценкам, Rust — один из самых быстрорастущих языков программирования. Хотя этому росту способствует множество факторов, в этом докладе автор сосредоточился на тех аспектах Rust, которые делают его особенно привлекательным в качестве языка системного программирования. Это касается инструментов, сообщества, стратегии и, конечно же, функций.
Смотреть доклад
По многим оценкам, Rust — один из самых быстрорастущих языков программирования. Хотя этому росту способствует множество факторов, в этом докладе автор сосредоточился на тех аспектах Rust, которые делают его особенно привлекательным в качестве языка системного программирования. Это касается инструментов, сообщества, стратегии и, конечно же, функций.
Смотреть доклад
Алгоритм is_sorted_until
Используется для определения первого несортированного элемента в диапазоне [first, last). Он возвращает итератор к первому несортированному элементу в диапазоне, поэтому все элементы между первым и возвращенным итератором сортируются.
Его также можно использовать для подсчета общего количества отсортированных элементов в диапазоне. Он определяется внутри файла заголовка. Если весь диапазон отсортирован, он вернет итератор, указывающий на последний.
#код
Используется для определения первого несортированного элемента в диапазоне [first, last). Он возвращает итератор к первому несортированному элементу в диапазоне, поэтому все элементы между первым и возвращенным итератором сортируются.
Его также можно использовать для подсчета общего количества отсортированных элементов в диапазоне. Он определяется внутри файла заголовка. Если весь диапазон отсортирован, он вернет итератор, указывающий на последний.
#код
Дайджест актуальных статей по C и C++. Сохраняй себе и делись с другом:
⚡️ 60 антипаттернов для С++ программиста
⚡️ Выносим за скобки настройки CMake
⚡️ Новые целочисленные типы для языка C++
⚡️ Генерация Пещер
⚡️ 21 фича современного C++, которые вам обязательно пригодятся
⚡️ Обновление fheroes2 — открытого движка Heroes of Might and Magic 2
⚡️ Зачем в Switch SDK три разных sin?
#дайджест
⚡️ 60 антипаттернов для С++ программиста
⚡️ Выносим за скобки настройки CMake
⚡️ Новые целочисленные типы для языка C++
⚡️ Генерация Пещер
⚡️ 21 фича современного C++, которые вам обязательно пригодятся
⚡️ Обновление fheroes2 — открытого движка Heroes of Might and Magic 2
⚡️ Зачем в Switch SDK три разных sin?
#дайджест
Оператор присваивания ( = ), строго говоря, является бинарным оператором. Его объявление идентично объявлению любого другого бинарного оператора со следующими исключениями:
☑️ Он должен быть нестатической функцией-членом.
☑️ Он не наследуется производными классами.
☑️ Компилятор может создать функцию operator = по умолчанию для типов классов, если она не существует.
В примере показано, как объявить оператор присваивания.
#код
☑️ Он должен быть нестатической функцией-членом.
☑️ Он не наследуется производными классами.
☑️ Компилятор может создать функцию operator = по умолчанию для типов классов, если она не существует.
В примере показано, как объявить оператор присваивания.
#код
Можно ли в C++ умножать или делить целое значение на степени двойки, не используя операций "*" или "/"?
Это можно делать в любом языке, где есть побитовый сдвиг. Умножению значения x на 2, например, соответствует операция x > 2.
#вопросы_с_собеседований
Это можно делать в любом языке, где есть побитовый сдвиг. Умножению значения x на 2, например, соответствует операция x > 2.
#вопросы_с_собеседований