{"id":18879798,"url":"https://github.com/gusenov/examples-cpp","last_synced_at":"2025-04-14T19:30:23.012Z","repository":{"id":130181996,"uuid":"154664278","full_name":"gusenov/examples-cpp","owner":"gusenov","description":"Примеры кода на C++.","archived":false,"fork":false,"pushed_at":"2024-06-05T05:04:19.000Z","size":4259,"stargazers_count":18,"open_issues_count":0,"forks_count":4,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-28T07:51:10.896Z","etag":null,"topics":["cpp","examples","oop","template-metaprogramming"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gusenov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-25T12:07:17.000Z","updated_at":"2025-02-17T20:38:23.000Z","dependencies_parsed_at":"2023-03-20T18:32:38.997Z","dependency_job_id":null,"html_url":"https://github.com/gusenov/examples-cpp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gusenov%2Fexamples-cpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gusenov%2Fexamples-cpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gusenov%2Fexamples-cpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gusenov%2Fexamples-cpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gusenov","download_url":"https://codeload.github.com/gusenov/examples-cpp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248945635,"owners_count":21187364,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","examples","oop","template-metaprogramming"],"created_at":"2024-11-08T06:39:29.922Z","updated_at":"2025-04-14T19:30:22.972Z","avatar_url":"https://github.com/gusenov.png","language":"C++","readme":"# Пространства имён\n\n- [Глобальные переменные в глобальном пространстве имён](syncfusion/cpp_succinctly/GlobalNamespaceSample/)\n- [Определение вложенных пространств имён](syncfusion/cpp_succinctly/NamespacesSample/)\n- [Безымянные пространства имен внутри именованных](ns/unnamed-namespace-within-named)\n\n\n# Переменные\n\n- [Время существования переменных](syncfusion/cpp_succinctly/StorageDurationSample/)\n- [Инициализация статической переменной в локальной области видимости происходит лишь однажды](static/static-var-in-local-scope)\n\n\n# Операторы\n\n- [Написание оператора разрешения области видимости ::](double-colon-scope-resolution-operator-syntax/)\n- [Переопределение операторов new и delete для отслеживания аллокаций](memory/allocation-tracking)\n- [Жизненный цикл переменных в условии if](memory/declare-variable-in-if)\n\n# Ввод / вывод\n\n- [std::wcout, std::wcerr, std::wcin](syncfusion/cpp_succinctly/ConsoleSample)\n- [std::ofstream никогда не создает папки](fs/out-to-file)\n- [Создание каталога с помощью функции mkdir() из библиотеки C POSIX](fs/posix-create-dir-if-not-exists)\n- [Копирование папки](fs/copy-dir)\n\n# Типы данных\n\n- [Создание псевдонимов для типов с помощью typedef](syncfusion/cpp_succinctly/TypedefSample)\n- [Кастинг типов данных](syncfusion/cpp_succinctly/CastingSample)\n- [Forward declaration типов](type/fwd-dec)\n\n## Примитивные типы данных\n\n- [Размеры фундаментальных типов данных](fundamental/fundamental-type-sz)\n- [Upcasting знаковых целых и их битовое представление](fundamental/upcasting-signed)\n- [Бинарное представление char, unsigned char, short и unsigned short](fundamental/bin-repr-of-type-val)\n- [Побитовое «ИЛИ» с bool](fundamental/bitwise-or-with-bool-type)\n- [Присваивание ULONG_MAX float-переменной и обратно](fundamental/ulong-to-float)\n- [Присваивание ```true```/```false``` int-переменной](fundamental/assign-bool-to-int)\n\n## Строки\n\n- [Присвоение экземпляру std::string массива char](str/assign-char-arr-to-string)\n- [Сравнение std::string и литеральной строки](str/cmp-std-str-with-char-arr)\n- [Преобразование std::string к float и обратно](fundamental/real2str)\n- [Преобразование std::string в std::wstring и обратно](str/wstring_convert)\n\n## Указатели\n\n- [Создание разделяемых указателей через конструктор или std::make_shared](syncfusion/cpp_succinctly/SharedPtrSample)\n- [Константные указатели и ссылки](syncfusion/cpp_succinctly/PointerSample)\n- [Освобождение памяти через delete[] для указателя const char* const](ptr/const-char-str-ptr-delete)\n- [Передача указателей в функцию](ptr/pass-ptr-to-func)\n- [Проверка shared_ptr на пустоту](ptr/shared_ptr-if)\n- [Присваивание указателя переменной типа auto \u0026](ptr/auto-ref-ptr)\n- [Указатель на шаблонную функцию](ptr/fn-ptr-using)\n\n## Ссылки\n\n- [Присваивание и возврат ссылок](ref/assign-ref2ref)\n- [Const-ссылка на временный объект - life time временного объекта продлевается до времени жизни ссылки](ref/assign-val-to-const-ref)\n\n## [Move semantics](move-semantics)\n\n- [Перемещение лямбды](move-semantics/move-lambda-as-param)\n- [Передача ```std::unique_ptr``` в функцию](move-semantics/pass-std-unique-ptr-to-fn)\n\n## Перечисления\n\n- [Scoped и un-scoped перечисления с указанием нижележащего интегрального (целочисленного) типа](syncfusion/cpp_succinctly/EnumSample)\n- [Передача перечисления в функцию](enum/pass-enum-to-function)\n- [Использование элементов перечисления в качестве флагов для битовой маски](enum/bit-mask-with-enum-as-flag)\n- [Преобразование enum в строку и обратно](enum/enum-converter)\n- [Передача массива enum-значений в функцию](enum/pass-enum-as-int-arr)\n\n## Объединения\n\n- [Анонимное объединение внутри структуры с отслеживанием активного элемента](syncfusion/cpp_succinctly/UnionSample)\n- [Передача объединения в функцию](union/pass-union-to-function)\n- [Объединение указателей](union/union-of-ptr)\n- [Определение stream insertion оператора “\u003c\u003c” для объединения](union/union-and-stream-insertion-operator)\n\n## Классы\n\n- [Особенности использования переменных из member initializer list для инициализации других переменных](member-initializer-list-params/)\n- [Возврат экземпляра приватного класса](class/return-private-class-instance)\n\n### Конструкторы\n\n- [Присваивание не вызывает конструктор копирования или деструктор](ctor/assignment-and-copy-ctor)\n- [Конструктор преобразования](syncfusion/cpp_succinctly/ConversionConstructor)\n- [Инициализация данных и суперклассов](syncfusion/cpp_succinctly/InitializationSample)\n- [Делегирующий конструктор](syncfusion/cpp_succinctly/DelegatingConstructor)\n- [Конструкторы копирования/перемещения и операторы присваивания копированием/перемещением](syncfusion/cpp_succinctly/ConstructorsSample)\n- [Не вызывается конструктор копирования из-за return value optimization](ctor/return-optimization-copy-ctor)\n- [Порядок инициализации членов класса](ctor/init-priority)\n- [auto переменная не означает ссылку если ей присвоить ссылку](ctor/auto-return-copy-ctor)\n\n### Деструкторы\n\n- [Деструкторы](dtor/)\n- [Можно ли использовать override для виртуального деструктора? Да.](dtor-virtual/example-1)\n- [При выходе из скопа для ссылки деструктор не вызывается](ref/ref-dtor-out-of-scope)\n\n### Наследование\n\n- [Можно ли использовать override для невиртуальных методов? Нет.](override/example-1)\n- [Виртуальное и невиртуальное наследование в сравнении](syncfusion/cpp_succinctly/InheritanceSample)\n- [Перекрытие виртуального метода в производном классе методом с аргументом по умолчанию, что вызывает [-Woverloaded-virtual]](inheritance/override-method-with-default-param)\n- [Переопределение уже определенного в суперклассе виртуального метода](inheritance/hide-virt-member-func)\n- [Аргументы по умолчанию в виртуальных функциях](inheritance/def-arg-and-virt-func)\n- [Переопределение в производном классе возвращаемого типа производным типом](override/override-method-return-value-with-subclass)\n- [Последнее переопределение виртуального метода будет вызываться на всех уровнях иерархии](override/overrided-method-call)\n- [dynamic_cast не может привести к результирующему типу если начальный тип не является потомком результирующего и не имеет с ним общего предка](inheritance/inheritance-dynamic-cast-to-other-branch)\n- [dynamic_cast и виртуальное наследование](inheritance/virtual-inheritance-dynamic-cast)\n- [Ковариантный возвращаемый тип виртуальной функции](virtual/chg-type-of-param-in-subclass-method)\n- [Изменение модификатора доступа унаследованного метода](inheritance/change-access-modifier)\n- [Будут ли перегружены от разных предков методы с одинаковыми именами и параметрами в наследнике? (по умолчанию нет)](override/same-super-methods)\n- [```dynamic_cast``` от одного родительского класса к другому](inheritance/dynamic-cast-from-parent-to-other-parent)\n\n### Интерфейсы\n\n- [Research по статическим интерфейсам в C++](interfaces/static-interfaces)\n- [Пример имитации интерфейса IWriteData абстрактным классом](syncfusion/cpp_succinctly/AbstractClassSample)\n- [Декларация интерфейсов в C++](declare-interface-cpp/)\n- [Способы декларировать интерфейс в C++11](way-to-declare-an-interface/)\n- [Пример интерфейса автомобиля с использованием динамического полиморфизма и ключевого слова struct](interfaces/virtual/example-1)\n- [Пример интерфейса генерации числа с использованием динамического полиморфизма и ключевого слова class](interfaces/virtual/example-2)\n- [Имплементация метода прямо в интерфейсе](interfaces/method-with-impl-in-interface)\n- [Сравнение наследования интерфейса в Java и С++](interfaces/iface-inheritance-cpp-vs-java)\n\n### Методы\n\n- [Виртуальный вариативный метод](virtual/virtual-variadic-method)\n- [Перегрузка метода с std::shared_ptr-параметром](overloading/call-is-ambiguous)\n- [Текучий интерфейс](method/fluent-interface)\n- [Значения по умолчанию для параметров виртуальных методов](virtual/virtual-method-default-parameter)\n\n\n# Константность\n\n- [Указатели и константность по данным и адресу](const/const-ptr)\n- [Вектор указателей со спецификаторами константности](const/std-vector-with-const-el)\n- [Два метода класса с одинаковыми именами, но один из них константный](const/methods-with-same-name-without-args)\n- [Удаление константности с типа](const/remove-const-from-type)\n- [Взятие адреса ```mutable``` поля класса](const/mutable-and-reference-operator)\n\n\n# Функции\n\n- [Объявление и определение функции в разных местах](declaration-and-definition-of-stand-alone-function-in-different-places)\n- [Декларация и дефиниция inline-функций в пространстве имён](syncfusion/cpp_succinctly/FunctionsSample)\n- [Декларация и дефиниция inline-функций в классе](syncfusion/cpp_succinctly/SimpleClassSample)\n- [Лямбда-выражения](syncfusion/cpp_succinctly/LambdaSample)\n- [Передача статического массива указателей в функцию](fn/pass-static-arr-of-ptr-into-fn)\n- [Проверка ```std::function``` на пустоту](std/std-function/std-function-empty)\n\n## Анонимные функции\n\n- [Захват parameter pack в лямбда-функцию](lambda/capture-variadic-parameter-pack)\n- [При захвате this, переменные экземпляра класса не копируются](lambda/lambda-capture-this)\n- [Перегрузка функций с лямбда-функцией в качестве аргумента](tpl/lambda-overloading)\n\n## Шаблонные функции\n\n- [Реализация функций с переменным числом аргументов через вариативные шаблоны](tpl/variadic-tpl)\n- [Передача перегруженной шаблонной функции в другую функцию с помощью вспомогательной структуры](tpl/pass-tpl-fn-as-param)\n- [Специализация шаблонных функций](fn/tpl-fn-spec)\n- [Шаблонизация возвращаемого значения](tpl/tpl-fn-return)\n- [Передача геттера в шаблонную функцию аргументом функции или параметром шаблона](tpl/tpl-struct-property-getter)\n- [Передача лямбды в метод класса параметром шаблона](tpl/pass-fn-to-tpl)\n- [Передача статической функции в шаблонную функцию параметром шаблона](tpl/stat-fn-as-tpl-param)\n- [Передача нескольких типов в вариативную шаблонную функцию и обработка каждого типа внутри лямбды](tpl/var-tpl-lambda)\n\n\n# Исключения\n\n- [Наследование от std::exception своих исключений](syncfusion/cpp_succinctly/ExceptionsSample)\n\n\n# Шаблоны\n\n- [Пример шаблона класса для выполнения простых арифметических операций](syncfusion/cpp_succinctly/TemplatesSample)\n- [Раздельная декларация и дефиниция шаблона класса](tpl/tpl-class-separate-def)\n- [Частичная специализация шаблонных методов класса](tpl/tpl-method-spec)\n- [Декларация и дефиниция явного инстанцирования шаблонов](tpl/fn-tpl-explicit-instantiation)\n- [Шаблон класса параметрированный геттером массива](tpl/tpl-with-arr-getter)\n- [Вызов у переданного указателя заданного метода с заданными аргументами](tpl/tpl-proxy)\n- [override метода предка переданного аргументом в шаблонный класс](tpl/tpl-and-override)\n- [Специализация шаблонного метода в .cpp файле](tpl/tpl-method-specialization-cpp)\n\n## Свертка\n\n- [Реализация функции печати с переменным числом аргументов с помощью выражения свертки](tpl/fold)\n- [Передача переменного количества классов в функцию и их обработка с помощью выражений свертки](tpl/var-tpl-and-fold-expr)\n\n## Трейты, характеристики, типажи, метафункции\n\n- [Введение в трейты](tpl/intro-to-traits)\n- [std::is_pointer_v\u003cYOUR_TYPE*\u0026\u003e возвращает false](tpl/type-traits-is-pointer)\n\n# Кросс-платформенность\n\n- [Портируемая точка входа](syncfusion/cpp_succinctly/pchar.h)\n- [Порядок от младшего к старшему - little-endian](endianness/little-endian)\n\n\n# Ошибки\n\n- [Множественное определение stand-alone функции в исходных файлах](errors/multiple-definitions-of-stand-alone-function-in-source-files)\n- [Множественное определение переменной в исходных файлах](errors/multiple-definitions-of-variables-in-source-files)\n- [Перекрытие лямбда-параметром захваченной переменной](errors/lambda-param-shadow-captured-entity)\n- [Шаблонные методы не могут быть виртуальными](tpl/virtual-with-tpl)\n\n\n# Идиомы\n\n## [Curiously recurring template pattern (CRTP)](crtp)\n\n- [CRTP со статической функцией](crtp/example-1)\n- [Пример одного и того же алгоритма с CRTP и без CRTP](crtp/example-2)\n\n## Pimpl (Pointer to Implementation – указатель на реализацию)\n\n- [Сэндвич](syncfusion/cpp_succinctly/PimplSample)\n\n## [Type Erasure](type-erasure)\n\n- [RPG game](type-erasure/rpg-game)\n\n\n# Стандартная библиотека\n\n- [Пример использования std::clamp](std/std-clamp)\n\n\n\n\n## Коллекции и контейнеры\n\n### std::vector\n\n- [Вставка элемента в std::vector в заданную позицию](std/collections/vector/vector-insert)\n- [Упорядоченная вставка объектов с компаратором в вектор](std/collections/vector/ins-el-into-vec)\n- [Как работает std::distance](std/collections/vector/std-vector-distance)\n- [Как работает erase](std/collections/vector/std-vector-erase)\n\n### std::list\n\n- [Сравнение двух списков из std::pair\u003cstd::string, std::string\u003e](std/collections/list/cmp-list-of-pairs)\n\n### std::map и std::unordered_map\n\n- [std::unordered_map при своём разрушении не вызывает деструктор для значений хранящихся по указателю](std/collections/map/unordered-map-el-dtor)\n- [Изменение значений в словаре путём операций на итератором](std/collections/map/change-map-item-value)\n- [Метод insert у std::unordered_map не обновляет существующее значение](std/collections/map/map-insert)\n- [Словарь из словарей со значением из класса по значению](std/collections/map/map-of-maps)\n- [Словарь с ключом типа int и значением типа множество строк](std/collections/map/unordered-map-of-unordered-sets)\n- [Получение значения по ссылке из std::unordered_map](std/collections/map/get-val-in-map-by-ref)\n- [Обход словаря состоящего из словарей](std/collections/map/loop-through-map-of-maps)\n- [Нельзя создать словарь со значением типа ссылки](std/collections/map/map-val-by-ref)\n- [Применение std::max_element к std::map](std/collections/map/map-int-str)\n- [Использование указателя на класс как ключа для std::unordered_map](std/collections/map/ptr-as-key-in-map)\n- [std::pair в качестве ключа для словаря](std/collections/map/pair-as-key)\n- [Удаление из std::map](std/collections/map/map-erase)\n- [Использование умного указателя в качестве ключа для словаря](std/collections/map/smart-ptr-as-key)\n\n### std::queue\n\n- [```emplace``` пары в очередь](std/collections/queue/emplace-in-queue-of-pair)\n\n### std::set и std::unordered_set\n\n- [Что будет если применить std::advance к std::unordered_set](std/containers/set/advance-on-set)\n- [Изменение ключа у элемента множества не приводит к изменению порядка элемента](std/containers/set/set-with-cmp-el)\n\n### std::tuple\n\n- [std::tuple из статических методов](std/containers/tuple/tuple-of-static-methods)\n\n### std::any\n\n- [std::any как параметр функции и передача в него значения с автоматическим преобразованием](std/containers/any/std-any-as-param)\n- [Контейнер свойств на основе std::any](std/containers/any/property-container)\n\n\n\n\n## Итераторы\n\n- [Кастомный итератор по древовидной структуре](it/tree-iter)\n\n\n\n\n## Потоки данных\n\n- [Потоки из стандартной библиотеки](stream/streams)\n- [Кастомный поточный буфер для чтения массива байтов из памяти](stream/custom-stream-buffer)\n\n\n\n\n## Умные указатели\n\n### std::shared_ptr\n\n- [Сравнение shared_ptr](smart-ptr/shared_ptr/cmp-shared-ptr)\n- [Простейшая реализация shared_from_this функциональности](smart-ptr/shared_ptr/shared-from-this)\n- [Приведение типов умных указателей](smart-ptr/shared_ptr/shared-ptr-casting)\n- [Сброс std::shared_ptr](smart-ptr/shared_ptr/shared-ptr-reset)\n- [Удаление элемента из std::vector\u003cstd::shared_ptr\u003c…\u003e\u003e](smart-ptr/shared_ptr/vec-with-shared-ptr-items)\n- [std::shared_ptr не вызывающий деструктор](smart-ptr/shared_ptr/null-deleter)\n- [Различия в создании shared_ptr через конструктор и make_shared](smart-ptr/shared_ptr/shared_ptr-vs-make_shared)\n- [Возврат std::shared_ptr\u003cT\u003e как std::shared_ptr\u003cT const\u003e](smart-ptr/shared_ptr/return-shared_ptr-const)\n\n### std::weak_ptr\n\n- [Как работают методы expired() и lock() у std::weak_ptr](smart-ptr/weak_ptr/lock-weak-ptr)\n- [Автоматическая инвалидация std::weak_ptr при выходе из области видимости](smart-ptr/weak_ptr/new-weak-ptr-expired)\n- [Как работает weak_from_this()](smart-ptr/weak_ptr/weak-from-this)\n- [Приведение типа пустого std::weak_ptr](smart-ptr/weak_ptr/cast-weak-ptr)\n\n### std::unique_ptr\n\n- [При присваивании std::unique_ptr происходит деструкция содержимого](smart-ptr/unique_ptr/unique-ptr-assign)\n\n\n\n\n## Многопоточность\n\n- [Получение ID потока и сон (sleep) в потоке](multithreading/thread-id)\n- [Использование std::async и std::future](multithreading/std-async-n-future)\n- [std::condition_variable проверяет условие ожидания при запуске и при вызове notify](multithreading/cond-var-wait)\n\n\n\n\n# Макросы\n\n- [Конкатенация частей в макросах](macro/macro-concat)\n\n\n# Производительность\n\n- [Примеры имплементации простого кэширования на уровне классов](cache)\n- [Сколько времени занимает выполнение циклов](performance/loop-time)\n\n\n# Генерация случайных чисел\n\n- [Генерация случайного целого числа в заданном диапазоне](rnd/random-int-in-range)\n- [При использовании ```std::random_device``` может быть исключение ```libc++abi: terminating with uncaught exception of type std::__1::system_error: random_device failed to open /dev/urandom: Too many open files```](rnd/random-device-usage)\n\n\n# Регулярные выражения\n\n- [Замена всех встреч слова в строке](regex/regex-repl-word)\n- [Генерация нового имени при копировании](regex/inc-filename)\n","funding_links":[],"categories":["Programming languages"],"sub_categories":["C++"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgusenov%2Fexamples-cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgusenov%2Fexamples-cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgusenov%2Fexamples-cpp/lists"}