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


Реализуйте свой собственный std::unique_ptr
std::unique_ptr — это реализация интеллектуального указателя на C++, которая обеспечивает монопольное владение объектом, а это означает, что объект, управляемый unique_ptr, может принадлежать только одному экземпляру unique_ptr. Вот реализация std::unique_ptr на C++: template <typename T> struct default_delete { default_delete() = default; default_delete(const default_delete&) = default; template <typename U> default_delete(const..

Универсальный справочник и идеальная пересылка
Также называется ссылкой для пересылки Предварительные требования: ссылки Rvalue Оглавление: 1. Введение 2. Двойная жизнь «&&» 3. Как определить универсальный справочник 4. Универсальный справочник в шаблонах 5. Универсальный справочник в авто 6. Как работает магия Univeral Reference? 7. Обращайтесь осторожно 8. В чем необходимость? Проблема идеальной пересылки 9. Как работать с универсальными ссылками? 10. Универсальная ссылка в «typedef» 11. Универсальная ссылка..

Modern C++ Is Fun 1: Признаки типов -SFINAE
Изучайте C++ гибкими способами Во-первых, здесь нужно прояснить пару вещей. Что такое Современный C++? Современный C++ по-прежнему остается C++, в основном эквивалентен C++ с прилагательным. Вы знаете, причина, по которой мы хотим присоединить прилагательное к существительному, заключается в том, что мы хотим сфокусировать или подчеркнуть некоторые его особенности. Например, когда мы говорим «очаровательный хаски», мы не только говорим о хаски этой породы, но и отмечаем, что..

Модель памяти
Теория и практика в C++ Полные спецификации см. в разделе cppreference. Определение Модель памяти описывает взаимодействие потоков через память и совместное использование ими данных. Порядок/непротиворечивость памяти определяет, будет ли доступ для чтения в ячейке памяти видеть начальное значение, значение, записанное в том же потоке, или значение, записанное в другом потоке. Вызов Управление порядком памяти — непреодолимая задача без поддержки языка программирования...

Алгебраические типы в C ++ 17
В функциональных языках алгебраические типы являются важной частью взаимодействия с пользователем и, на мой взгляд, наиболее полным и минимальным способом определения структур данных. В Coq определение полиморфного списка выглядит так: Inductive list {T} := | nil: @list T | cons: T -> @list T -> @list T. Что сообщает нам все, что нам нужно знать о списках; Они могут быть пустыми (ноль) Или они могут содержать элемент (голова) и другой список (хвост) Определение списка..

Алгоритм динамического программирования Флойда Уоршалла
Задача о кратчайших путях для всех пар Здравствуйте, если вы помните алгоритм Дейкстры, который находит кратчайший путь между исходным узлом и всеми остальными узлами, но что, если мы хотим найти кратчайший путь между любыми двумя случайными узлами, присутствующими в графе?? Итак, у нас есть алгоритм под названием Алго Флойда Уоршалла. Он был назван так потому, что алгоритм Уоршелла находит транзитивное замыкание орграфов, а алгоритм Флойда находит кратчайший путь для всех пар. На самом..

Аккуратная C++ альтернатива свойствам C#
Введение Несмотря на то, что мы все знаем, что свойства C# являются хорошей заменой написанию функций получения/установки для каждого отдельного поля члена класса, фактически у нас нет стандартного способа использования свойств в C++. Вот быстрая реализация альтернативных свойств C++. Дизайн призван дать ощущение, максимально похожее на использование свойств C#, хотя в реализации есть некоторые неприятные аспекты. Использование кода При использовании кода просто добавьте ‘ prop.h ’..