Публикации по теме '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++ имеет множество стандартных алгоритмов. Но они не всегда применимы к каждой ситуации. Если действие, которое вы пытаетесь сделать, не поддерживается этими алгоритмами, то для его решения вам, скорее всего, придется вводить уродливые вложенные циклы и флаги. При этом код..