Публикации по теме 'cplusplus'


Ежедневные кусочки C++ | std::stable_sort
Ежедневный бит(е) C++ #243. Алгоритм стабильной сортировки: std::stable_sort. std::stable_sort  — это более медленная версия std::sort , которая дополнительно обеспечивает стабильность, т. е. эквивалентные элементы сохраняют свои относительные позиции. Это важно, особенно для интерактивных случаев, когда один диапазон можно неоднократно сортировать по разным аспектам. #include <algorithm> #include <vector> struct Data { int a; int b; int c; };..

Сказка о двух Clang (и почему C++ меня огорчает)
Пролог Мне очень не нравится Microsoft Visual Studio. Я считаю, что это слишком сложно и больше вредит, чем помогает, особенно для команд, которым необходимо работать в нескольких операционных системах. Несмотря на это, есть некоторые вещи, для которых это абсолютно необходимо, когда дело доходит до разработки Windows (например, если вы хотите настоящую отладку), и бывают случаи, когда сама разработка Windows абсолютно необходима (например, когда начальник или профессор говорит вам вы..

Ежедневные кусочки C++ | Математические константы C++20
Ежедневный бит(е) C++ #248, Математические константы в C++20 через заголовок «numbers». До C++20 использование общих математических констант основывалось либо на POSIX, либо на расширении компилятора через заголовок ‹math.h> . В C++20 появился новый заголовок ‹numbers , который предоставляет общие математические константы в качестве шаблонов, которые можно специализировать для типов пользователей. Стандартная библиотека предоставляет специализации float, double и long double с..

Ежедневный бит(е) C++ | std::type_index, boost::type_index
Ежедневный бит (e) C++ # 201, Сопоставление std:: type_info с именами типов, удобочитаемыми для человека, с использованием C++ 11 std:: type_index и boost:: type_index. Объект std::type_info , возвращаемый оператором typeid, не предоставляет доступ к удобочитаемому имени типа. Мы можем смягчить эту проблему вручную, полагаясь на C++11 std::type_index и вручную отслеживая сопоставление между std::type_info и любой необходимой информацией. #include <unordered_map> #include..

Ежедневный бит(е) C++ | std::views::шаг
Ежедневный бит (е) C++ # 82, представление C++ 23 «каждый n-й элемент»: std::views::stride C++23 std::views::stride — это представление, которое содержит каждый n-й элемент исходного представления. Это полезно, когда мы хотим представить обход по порядку столбцов с помощью представлений. #include <iostream> #include <ranges> #include <vector> #include <string_view> using namespace std::literals; auto text = "Hello World!"sv; // Iterate over..

Утечка памяти в C++
В вашей программе есть утечка памяти? ERROR: LeakSanitizer: detected memory leaks О нет, утечки памяти? Как это произошло? Утечки памяти происходят, когда происходит выделение памяти в куче, но не происходит освобождение памяти после использования. Таким образом, это уменьшит доступную память. Простой пример Чтобы проиллюстрировать, как это может произойти, мы используем простой пример с ключевым словом «dangerous» new . Чтобы запустить и наблюдать за утечкой памяти,..

Стандарт C++20: обзор новых возможностей C++. Часть 4 «Диапазоны»
До сих пор было рассмотрено ядро ​​языка. Теперь я расскажу об изменении в стандартной библиотеке, которое не добавляет ничего нового в синтаксис — заголовочный файл, введенный C++20: <ranges> . Мотивация C++ имеет множество стандартных алгоритмов. Но они не всегда применимы к каждой ситуации. Если действие, которое вы пытаетесь сделать, не поддерживается этими алгоритмами, то для его решения вам, скорее всего, придется вводить уродливые вложенные циклы и флаги. При этом код..