[{"data":1,"prerenderedAt":20827},["ShallowReactive",2],{"navigation_docs":3,"-cpp-ranges-views":5388,"-cpp-ranges-views-surround":20822},[4,1707,2116,2588,2769,2937,3144,3266,3316,3373,3407,3533,3610,3624,3763,4141,4218,4951,5126,5219,5272,5384],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"C#","i-devicon-csharp","\u002Fcsharp","01.csharp",[10,13,60,90,120,202,219,253,379,404,457,650,1364,1654,1703],{"title":11,"path":7,"stem":12},"C# та .NET","01.csharp\u002Findex",{"title":14,"icon":15,"path":16,"stem":17,"children":18,"page":59},"Fundamentals","i-lucide-book-open","\u002Fcsharp\u002Ffundamentals","01.csharp\u002F01.fundamentals",[19,23,27,31,35,39,43,47,51,55],{"title":20,"path":21,"stem":22},"Вступ до екосистеми .NET","\u002Fcsharp\u002Ffundamentals\u002Fintroduction-to-ecosystem","01.csharp\u002F01.fundamentals\u002F01.introduction-to-ecosystem",{"title":24,"path":25,"stem":26},"Структура програми на C#","\u002Fcsharp\u002Ffundamentals\u002Fprogram-structure","01.csharp\u002F01.fundamentals\u002F02.program-structure",{"title":28,"path":29,"stem":30},"Змінні та Типи Даних","\u002Fcsharp\u002Ffundamentals\u002Fvariables-data-types","01.csharp\u002F01.fundamentals\u002F03.variables-data-types",{"title":32,"path":33,"stem":34},"Масиви","\u002Fcsharp\u002Ffundamentals\u002Farrays","01.csharp\u002F01.fundamentals\u002F04.arrays",{"title":36,"path":37,"stem":38},"Strings & Text Handling","\u002Fcsharp\u002Ffundamentals\u002Fstrings-text-handling","01.csharp\u002F01.fundamentals\u002F05.strings-text-handling",{"title":40,"path":41,"stem":42},"Дати і Час","\u002Fcsharp\u002Ffundamentals\u002Fdates-time-handling","01.csharp\u002F01.fundamentals\u002F06.dates-time-handling",{"title":44,"path":45,"stem":46},"Потік Керування","\u002Fcsharp\u002Ffundamentals\u002Fcontrol-flow","01.csharp\u002F01.fundamentals\u002F07.control-flow",{"title":48,"path":49,"stem":50},"Методи","\u002Fcsharp\u002Ffundamentals\u002Fmethods","01.csharp\u002F01.fundamentals\u002F08.methods",{"title":52,"path":53,"stem":54},"Основи Відлагодження","\u002Fcsharp\u002Ffundamentals\u002Fdebugging-basics","01.csharp\u002F01.fundamentals\u002F09.debugging-basics",{"title":56,"path":57,"stem":58},"Інтерактивна Консоль (Classic)","\u002Fcsharp\u002Ffundamentals\u002Finteractive-console","01.csharp\u002F01.fundamentals\u002F10.interactive-console",false,{"title":61,"icon":62,"path":63,"stem":64,"children":65,"page":59},"OOP","i-lucide-box","\u002Fcsharp\u002Foop","01.csharp\u002F02.oop",[66,70,74,78,82,86],{"title":67,"path":68,"stem":69},"Package Management (Управління Пакетами)","\u002Fcsharp\u002Foop\u002Fpackage-management","01.csharp\u002F02.oop\u002F01.package-management",{"title":71,"path":72,"stem":73},"Класи та Об'єкти","\u002Fcsharp\u002Foop\u002Fclasses-objects","01.csharp\u002F02.oop\u002F02.classes-objects",{"title":75,"path":76,"stem":77},"Властивості та Поля","\u002Fcsharp\u002Foop\u002Fproperties-fields","01.csharp\u002F02.oop\u002F03.properties-fields",{"title":79,"path":80,"stem":81},"Стовпи ООП","\u002Fcsharp\u002Foop\u002Foop-pillars","01.csharp\u002F02.oop\u002F04.oop-pillars",{"title":83,"path":84,"stem":85},"Advanced Types","\u002Fcsharp\u002Foop\u002Fadvanced-types","01.csharp\u002F02.oop\u002F05.advanced-types",{"title":87,"path":88,"stem":89},"Namespaces (Простори Імен)","\u002Fcsharp\u002Foop\u002Fnamespaces","01.csharp\u002F02.oop\u002F06.namespaces",{"title":91,"icon":92,"path":93,"stem":94,"children":95,"page":59},"Advanced Core","i-lucide-zap","\u002Fcsharp\u002Fadvanced-core","01.csharp\u002F03.advanced-core",[96,100,104,108,112,116],{"title":97,"path":98,"stem":99},"Generics (Узагальнення)","\u002Fcsharp\u002Fadvanced-core\u002Fgenerics","01.csharp\u002F03.advanced-core\u002F01.generics",{"title":101,"path":102,"stem":103},"Делегати, Події та Лямбда-вирази","\u002Fcsharp\u002Fadvanced-core\u002Fdelegates-events-lambdas","01.csharp\u002F03.advanced-core\u002F02.delegates-events-lambdas",{"title":105,"path":106,"stem":107},"Interfaces Deep Dive (Інтерфейси: Поглиблений Розгляд)","\u002Fcsharp\u002Fadvanced-core\u002Finterfaces-deep-dive","01.csharp\u002F03.advanced-core\u002F03.interfaces-deep-dive",{"title":109,"path":110,"stem":111},"Обробка Винятків","\u002Fcsharp\u002Fadvanced-core\u002Fexception-handling","01.csharp\u002F03.advanced-core\u002F04.exception-handling",{"title":113,"path":114,"stem":115},"Pattern Matching","\u002Fcsharp\u002Fadvanced-core\u002Fpattern-matching","01.csharp\u002F03.advanced-core\u002F05.pattern-matching",{"title":117,"path":118,"stem":119},"Додаткові Можливості C#","\u002Fcsharp\u002Fadvanced-core\u002Fadditional-features","01.csharp\u002F03.advanced-core\u002F06.additional-features",{"title":121,"icon":122,"path":123,"stem":124,"children":125,"page":59},"Architecture Best Practices","i-lucide-building-2","\u002Fcsharp\u002Farchitecture-best-practices","01.csharp\u002F04.architecture-best-practices",[126,130,149,153,157,161,165,169],{"title":127,"path":128,"stem":129},"Software Design Principles (Частина 1)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fsoftware-design-principles","01.csharp\u002F04.architecture-best-practices\u002F01.software-design-principles",{"title":131,"icon":132,"path":133,"stem":134,"children":135,"page":59},"Design Patterns","i-lucide-folder","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdesign-patterns","01.csharp\u002F04.architecture-best-practices\u002F02.design-patterns",[136],{"title":137,"icon":132,"path":138,"stem":139,"children":140,"page":59},"Creational","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdesign-patterns\u002Fcreational","01.csharp\u002F04.architecture-best-practices\u002F02.design-patterns\u002Fcreational",[141,145],{"title":142,"path":143,"stem":144},"Singleton (Одинак)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdesign-patterns\u002Fcreational\u002Fsingleton","01.csharp\u002F04.architecture-best-practices\u002F02.design-patterns\u002Fcreational\u002F01.singleton",{"title":146,"path":147,"stem":148},"Builder (Будівельник)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdesign-patterns\u002Fcreational\u002Fbuilder","01.csharp\u002F04.architecture-best-practices\u002F02.design-patterns\u002Fcreational\u002F02.builder",{"title":150,"path":151,"stem":152},"Building Professional CLIs","\u002Fcsharp\u002Farchitecture-best-practices\u002Fbuilding-professional-clis","01.csharp\u002F04.architecture-best-practices\u002F03.building-professional-clis",{"title":154,"path":155,"stem":156},"Validation & Flow Control","\u002Fcsharp\u002Farchitecture-best-practices\u002Fvalidation-flow-control","01.csharp\u002F04.architecture-best-practices\u002F04.validation-flow-control",{"title":158,"path":159,"stem":160},"The Modern .NET Host (Microsoft.Extensions)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fmodern-dotnet-host","01.csharp\u002F04.architecture-best-practices\u002F05.modern-dotnet-host",{"title":162,"path":163,"stem":164},"Data Mapper: Repository та DAO патерни (Частина 1)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdata-mapper-part1","01.csharp\u002F04.architecture-best-practices\u002F06.data-mapper-part1",{"title":166,"path":167,"stem":168},"Data Mapper: Repository та DAO патерни (Частина 2)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdata-mapper-part2","01.csharp\u002F04.architecture-best-practices\u002F07.data-mapper-part2",{"title":170,"icon":132,"path":171,"stem":172,"children":173,"page":59},"Di Ioc","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc",[174,178,182,186,190,194,198],{"title":175,"path":176,"stem":177},"Проблема залежностей та Інверсія Контролю","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fthe-dependency-problem","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F01.the-dependency-problem",{"title":179,"path":180,"stem":181},"Будуємо власний Service Container","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fbuild-your-own-container","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F02.build-your-own-container",{"title":183,"path":184,"stem":185},"Service Locator: Паттерн та Анти-паттерн","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fservice-locator-pattern","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F03.service-locator-pattern",{"title":187,"path":188,"stem":189},"Паттерни Dependency Injection","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fdependency-injection-patterns","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F04.dependency-injection-patterns",{"title":191,"path":192,"stem":193},"Microsoft DI: IServiceCollection та IServiceProvider","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fmicrosoft-di-deep-dive","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F05.microsoft-di-deep-dive",{"title":195,"path":196,"stem":197},"Service Lifetimes та Scopes","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fservice-lifetimes-and-scopes","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F06.service-lifetimes-and-scopes",{"title":199,"path":200,"stem":201},"DI Анти-паттерни та Найкращі Практики","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fdi-anti-patterns-and-best-practices","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F07.di-anti-patterns-and-best-practices",{"title":203,"icon":132,"path":204,"stem":205,"children":206,"page":59},"Standard Library","\u002Fcsharp\u002Fstandard-library","01.csharp\u002F05.standard-library",[207,211,215],{"title":208,"path":209,"stem":210},"Collections (Колекції)","\u002Fcsharp\u002Fstandard-library\u002Fcollections","01.csharp\u002F05.standard-library\u002F01.collections",{"title":212,"path":213,"stem":214},"High Performance Types (Високопродуктивні Типи)","\u002Fcsharp\u002Fstandard-library\u002Fhigh-performance-types","01.csharp\u002F05.standard-library\u002F02.high-performance-types",{"title":216,"path":217,"stem":218},"LINQ (Language Integrated Query)","\u002Fcsharp\u002Fstandard-library\u002Flinq","01.csharp\u002F05.standard-library\u002F03.linq",{"title":220,"icon":221,"path":222,"stem":223,"children":224,"page":59},"System Internals Concurrency","i-lucide-server","\u002Fcsharp\u002Fsystem-internals-concurrency","01.csharp\u002F06.system-internals-concurrency",[225,229,233,237,241,245,249],{"title":226,"path":227,"stem":228},"Memory Management","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fmemory-management","01.csharp\u002F06.system-internals-concurrency\u002F01.memory-management",{"title":230,"path":231,"stem":232},"Reflection API: System.Type та Метадані","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Freflection-fundamentals","01.csharp\u002F06.system-internals-concurrency\u002F02.reflection-fundamentals",{"title":234,"path":235,"stem":236},"Attributes та Dynamic Language Runtime","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fattributes-dynamic","01.csharp\u002F06.system-internals-concurrency\u002F03.attributes-dynamic",{"title":238,"path":239,"stem":240},"Expression Trees: Швидка Альтернатива Рефлексії","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fexpression-trees-compiled","01.csharp\u002F06.system-internals-concurrency\u002F04.expression-trees-compiled",{"title":242,"path":243,"stem":244},"Source Generators: Compile-Time Code Generation","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fsource-generators","01.csharp\u002F06.system-internals-concurrency\u002F05.source-generators",{"title":246,"path":247,"stem":248},"Multithreading Fundamentals","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fmultithreading-fundamentals","01.csharp\u002F06.system-internals-concurrency\u002F06.multithreading-fundamentals",{"title":250,"path":251,"stem":252},"Synchronization Primitives","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fsynchronization-primitives","01.csharp\u002F06.system-internals-concurrency\u002F07.synchronization-primitives",{"title":254,"icon":255,"path":256,"stem":257,"children":258,"page":59},"System Programming Windows","i-lucide-cpu","\u002Fcsharp\u002Fsystem-programming-windows","01.csharp\u002F07.system-programming-windows",[259,263,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327,331,335,339,343,347,351,355,359,363,367,371,375],{"title":260,"path":261,"stem":262},"Як Працює Операційна Система","\u002Fcsharp\u002Fsystem-programming-windows\u002Fhow-os-works","01.csharp\u002F07.system-programming-windows\u002F01.how-os-works",{"title":264,"path":265,"stem":266},"Процеси в .NET — API та Запуск","\u002Fcsharp\u002Fsystem-programming-windows\u002Fprocesses-in-dotnet","01.csharp\u002F07.system-programming-windows\u002F02.processes-in-dotnet",{"title":268,"path":269,"stem":270},"Процеси в .NET — IPC та Міжпроцесна Комунікація","\u002Fcsharp\u002Fsystem-programming-windows\u002F02a.processes-ipc","01.csharp\u002F07.system-programming-windows\u002F02a.processes-ipc",{"title":272,"path":273,"stem":274},"Application Domains та Збірки — AppDomain і AssemblyLoadContext","\u002Fcsharp\u002Fsystem-programming-windows\u002Fappdomains-assemblies","01.csharp\u002F07.system-programming-windows\u002F03.appdomains-assemblies",{"title":276,"path":277,"stem":278},"Application Domains та Збірки — Plug-in Система з Hot-Reload","\u002Fcsharp\u002Fsystem-programming-windows\u002F03a.appdomains-plugin-system","01.csharp\u002F07.system-programming-windows\u002F03a.appdomains-plugin-system",{"title":280,"path":281,"stem":282},"Потоки — Основи та API Thread","\u002Fcsharp\u002Fsystem-programming-windows\u002Fthread-fundamentals","01.csharp\u002F07.system-programming-windows\u002F04.thread-fundamentals",{"title":284,"path":285,"stem":286},"Потоки — Lifecycle, Пріоритети та Безпечне Завершення","\u002Fcsharp\u002Fsystem-programming-windows\u002F04a.thread-lifecycle-priorities","01.csharp\u002F07.system-programming-windows\u002F04a.thread-lifecycle-priorities",{"title":288,"path":289,"stem":290},"Проблеми Спільного Стану — Race Condition та Data Race","\u002Fcsharp\u002Fsystem-programming-windows\u002Fshared-state-problems","01.csharp\u002F07.system-programming-windows\u002F05.shared-state-problems",{"title":292,"path":293,"stem":294},"Проблеми Спільного Стану — Memory Model та volatile","\u002Fcsharp\u002Fsystem-programming-windows\u002F05a.shared-state-memory-model","01.csharp\u002F07.system-programming-windows\u002F05a.shared-state-memory-model",{"title":296,"path":297,"stem":298},"Синхронізація — Monitor, lock та еволюція примітивів","\u002Fcsharp\u002Fsystem-programming-windows\u002Fsynchronization-fundamentals","01.csharp\u002F07.system-programming-windows\u002F06.synchronization-fundamentals",{"title":300,"path":301,"stem":302},"Синхронізація — Наскрізний Приклад та Deadlock Detection","\u002Fcsharp\u002Fsystem-programming-windows\u002F06a.synchronization-walkthrough","01.csharp\u002F07.system-programming-windows\u002F06a.synchronization-walkthrough",{"title":304,"path":305,"stem":306},"Синхронізація — Mutex, Semaphore та Event-Based Primitives","\u002Fcsharp\u002Fsystem-programming-windows\u002Fsynchronization-advanced","01.csharp\u002F07.system-programming-windows\u002F07.synchronization-advanced",{"title":308,"path":309,"stem":310},"Синхронізація — Interlocked, Volatile та Lock-Free Структури","\u002Fcsharp\u002Fsystem-programming-windows\u002F07a.synchronization-advanced-walkthrough","01.csharp\u002F07.system-programming-windows\u002F07a.synchronization-advanced-walkthrough",{"title":312,"path":313,"stem":314},"Interlocked, CAS та Lock-Free Структури","\u002Fcsharp\u002Fsystem-programming-windows\u002Finterlocked-cas-lockfree","01.csharp\u002F07.system-programming-windows\u002F08.interlocked-cas-lockfree",{"title":316,"path":317,"stem":318},"Volatile, Memory Model та Spinning","\u002Fcsharp\u002Fsystem-programming-windows\u002F08a.volatile-memory-model","01.csharp\u002F07.system-programming-windows\u002F08a.volatile-memory-model",{"title":320,"path":321,"stem":322},"ThreadPool — Пул Потоків для Ефективного Виконання","\u002Fcsharp\u002Fsystem-programming-windows\u002Fthread-pool","01.csharp\u002F07.system-programming-windows\u002F09.thread-pool",{"title":324,"path":325,"stem":326},"ThreadPool — Просунуті Сценарії та Внутрішня Будова","\u002Fcsharp\u002Fsystem-programming-windows\u002F09a.thread-pool-advanced","01.csharp\u002F07.system-programming-windows\u002F09a.thread-pool-advanced",{"title":328,"path":329,"stem":330},"Concurrent та Immutable Collections","\u002Fcsharp\u002Fsystem-programming-windows\u002Fconcurrent-collections","01.csharp\u002F07.system-programming-windows\u002F10.concurrent-collections",{"title":332,"path":333,"stem":334},"TPL, Task та Композиція — Від Thread до Task","\u002Fcsharp\u002Fsystem-programming-windows\u002Ftpl-parallel-plinq","01.csharp\u002F07.system-programming-windows\u002F11.tpl-parallel-plinq",{"title":336,"path":337,"stem":338},"Parallel Class та PLINQ — Data Parallelism","\u002Fcsharp\u002Fsystem-programming-windows\u002F11a.tpl-parallel-plinq-advanced","01.csharp\u002F07.system-programming-windows\u002F11a.tpl-parallel-plinq-advanced",{"title":340,"path":341,"stem":342},"Async\u002FAwait — Фундамент Асинхронного Програмування","\u002Fcsharp\u002Fsystem-programming-windows\u002Fasync-fundamentals","01.csharp\u002F07.system-programming-windows\u002F12.async-fundamentals",{"title":344,"path":345,"stem":346},"SynchronizationContext та ConfigureAwait — Контекст Виконання","\u002Fcsharp\u002Fsystem-programming-windows\u002Fasync-context-configureawait","01.csharp\u002F07.system-programming-windows\u002F13.async-context-configureawait",{"title":348,"path":349,"stem":350},"Async — Просунуті Паттерни","\u002Fcsharp\u002Fsystem-programming-windows\u002Fasync-advanced","01.csharp\u002F07.system-programming-windows\u002F14.async-advanced",{"title":352,"path":353,"stem":354},"System.Threading.Channels — Async Producer-Consumer","\u002Fcsharp\u002Fsystem-programming-windows\u002Fchannels","01.csharp\u002F07.system-programming-windows\u002F15.channels",{"title":356,"path":357,"stem":358},"Асинхронна Синхронізація","\u002Fcsharp\u002Fsystem-programming-windows\u002Fasync-synchronization","01.csharp\u002F07.system-programming-windows\u002F16.async-synchronization",{"title":360,"path":361,"stem":362},"Unsafe Code та Вказівники","\u002Fcsharp\u002Fsystem-programming-windows\u002Funsafe-code","01.csharp\u002F07.system-programming-windows\u002F17.unsafe-code",{"title":364,"path":365,"stem":366},"P\u002FInvoke та Windows API — Міст між .NET та Native Code","\u002Fcsharp\u002Fsystem-programming-windows\u002Fpinvoke-winapi","01.csharp\u002F07.system-programming-windows\u002F18.pinvoke-winapi",{"title":368,"path":369,"stem":370},"Реєстр Windows — Центральна База Конфігурації Системи","\u002Fcsharp\u002Fsystem-programming-windows\u002Fwindows-registry","01.csharp\u002F07.system-programming-windows\u002F19.windows-registry",{"title":372,"path":373,"stem":374},"Windows Hooks, Hotkeys та Services — Глибока Інтеграція з ОС","\u002Fcsharp\u002Fsystem-programming-windows\u002Fwindows-hooks-services","01.csharp\u002F07.system-programming-windows\u002F20.windows-hooks-services",{"title":376,"path":377,"stem":378},"Системне Програмування C# (Windows) — 07.system-programming-windows","\u002Fcsharp\u002Fsystem-programming-windows\u002Fimplementation_plan","01.csharp\u002F07.system-programming-windows\u002Fimplementation_plan",{"title":380,"icon":132,"path":381,"stem":382,"children":383,"page":59},"Io","\u002Fcsharp\u002Fio","01.csharp\u002F08.io",[384,388,392,396,400],{"title":385,"path":386,"stem":387},"8.1.1. Основи роботи з файловою системою","\u002Fcsharp\u002Fio\u002Ffile-system-basics","01.csharp\u002F08.io\u002F01.file-system-basics",{"title":389,"path":390,"stem":391},"8.1.2. Потоки (Streams) та Серіалізація Даних","\u002Fcsharp\u002Fio\u002Fstreams-serialization","01.csharp\u002F08.io\u002F02.streams-serialization",{"title":393,"path":394,"stem":395},"8.2.1. JSON Serialization з System.Text.Json","\u002Fcsharp\u002Fio\u002Fjson-serialization","01.csharp\u002F08.io\u002F03.json-serialization",{"title":397,"path":398,"stem":399},"8.2.2. XML Serialization та LINQ to XML","\u002Fcsharp\u002Fio\u002Fxml-serialization","01.csharp\u002F08.io\u002F04.xml-serialization",{"title":401,"path":402,"stem":403},"8.2.3. Binary Serialization: MessagePack та Protocol Buffers","\u002Fcsharp\u002Fio\u002Fbinary-serialization","01.csharp\u002F08.io\u002F05.binary-serialization",{"title":405,"icon":132,"path":406,"stem":407,"children":408,"page":59},"Ado Net","\u002Fcsharp\u002Fado-net","01.csharp\u002F09.ado-net",[409,413,417,421,425,429,433,437,441,445,449,453],{"title":410,"path":411,"stem":412},"9.1. Введення в ADO.NET","\u002Fcsharp\u002Fado-net\u002Fintroduction-to-adonet","01.csharp\u002F09.ado-net\u002F01.introduction-to-adonet",{"title":414,"path":415,"stem":416},"9.2. Клас DbConnection — з'єднання з базою даних","\u002Fcsharp\u002Fado-net\u002Fconnection","01.csharp\u002F09.ado-net\u002F02.connection",{"title":418,"path":419,"stem":420},"9.3. Клас DbCommand — виконання SQL-запитів","\u002Fcsharp\u002Fado-net\u002Fcommand-and-queries","01.csharp\u002F09.ado-net\u002F03.command-and-queries",{"title":422,"path":423,"stem":424},"9.4. Клас DbDataReader — ефективне читання даних","\u002Fcsharp\u002Fado-net\u002Fdatareader","01.csharp\u002F09.ado-net\u002F04.datareader",{"title":426,"path":427,"stem":428},"9.5. Параметризовані запити та захист від SQL Injection","\u002Fcsharp\u002Fado-net\u002Fparameters-and-sql-injection","01.csharp\u002F09.ado-net\u002F05.parameters-and-sql-injection",{"title":430,"path":431,"stem":432},"9.6. Транзакції в ADO.NET","\u002Fcsharp\u002Fado-net\u002Ftransactions","01.csharp\u002F09.ado-net\u002F06.transactions",{"title":434,"path":435,"stem":436},"9.7. DbProviderFactory — провайдер-незалежний код","\u002Fcsharp\u002Fado-net\u002Fprovider-factory","01.csharp\u002F09.ado-net\u002F07.provider-factory",{"title":438,"path":439,"stem":440},"9.8. Асинхронний доступ до даних","\u002Fcsharp\u002Fado-net\u002Fasync-data-access","01.csharp\u002F09.ado-net\u002F08.async-data-access",{"title":442,"path":443,"stem":444},"9.9. Від'єднаний режим: DataSet, DataTable, DataRow","\u002Fcsharp\u002Fado-net\u002Fdisconnected-mode-dataset","01.csharp\u002F09.ado-net\u002F09.disconnected-mode-dataset",{"title":446,"path":447,"stem":448},"9.10. DataAdapter — міст між DataSet та базою даних","\u002Fcsharp\u002Fado-net\u002Fdata-adapter","01.csharp\u002F09.ado-net\u002F10.data-adapter",{"title":450,"path":451,"stem":452},"9.11. Data Mapper та Repository: Архітектура доступу до даних","\u002Fcsharp\u002Fado-net\u002Fdata-mapper-repository","01.csharp\u002F09.ado-net\u002F11.data-mapper-repository",{"title":454,"path":455,"stem":456},"9.12. Identity Map, Unit of Work та Specification Pattern","\u002Fcsharp\u002Fado-net\u002Fadvanced-patterns","01.csharp\u002F09.ado-net\u002F12.advanced-patterns",{"title":458,"icon":255,"path":459,"stem":460,"children":461,"page":59},"Ef Core","\u002Fcsharp\u002Fef-core","01.csharp\u002F10.ef-core",[462,466,470,474,478,482,486,490,494,498,502,506,510,514,518,522,526,532,538,542,546,550,554,558,562,566,570,574,578,582,586,590,594,598,602,606,610,614,618,622,626,630,634,638,642,646],{"title":463,"path":464,"stem":465},"Що таке ORM? Від SQL до об'єктів","\u002Fcsharp\u002Fef-core\u002Fwhat-is-orm","01.csharp\u002F10.ef-core\u002F01.what-is-orm",{"title":467,"path":468,"stem":469},"Перший проєкт — від нуля до CRUD","\u002Fcsharp\u002Fef-core\u002Ffirst-project","01.csharp\u002F10.ef-core\u002F02.first-project",{"title":471,"path":472,"stem":473},"DbContext — Серце EF Core","\u002Fcsharp\u002Fef-core\u002Fdbcontext-deep-dive","01.csharp\u002F10.ef-core\u002F03.dbcontext-deep-dive",{"title":475,"path":476,"stem":477},"Провайдери баз даних — Архітектура та Вибір СУБД","\u002Fcsharp\u002Fef-core\u002Fdatabase-providers","01.csharp\u002F10.ef-core\u002F04.database-providers",{"title":479,"path":480,"stem":481},"Конвенції EF Core — Магія без конфігурації","\u002Fcsharp\u002Fef-core\u002Fconventions","01.csharp\u002F10.ef-core\u002F05.conventions",{"title":483,"path":484,"stem":485},"Fluent API та Data Annotations — Явна конфігурація моделі","\u002Fcsharp\u002Fef-core\u002Ffluent-api-vs-annotations","01.csharp\u002F10.ef-core\u002F06.fluent-api-vs-annotations",{"title":487,"path":488,"stem":489},"Зв'язки — One-to-One та One-to-Many","\u002Fcsharp\u002Fef-core\u002Frelationships-basics","01.csharp\u002F10.ef-core\u002F07.relationships-basics",{"title":491,"path":492,"stem":493},"Зв'язки Advanced — Many-to-Many та Складні Сценарії","\u002Fcsharp\u002Fef-core\u002Frelationships-advanced","01.csharp\u002F10.ef-core\u002F08.relationships-advanced",{"title":495,"path":496,"stem":497},"Властивості — Типи, Конвертери, Компаратори (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fproperty-configuration-part1","01.csharp\u002F10.ef-core\u002F09.property-configuration-part1",{"title":499,"path":500,"stem":501},"Властивості — Value Comparers, Generators, Shadow Properties (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fproperty-configuration-part2","01.csharp\u002F10.ef-core\u002F09.property-configuration-part2",{"title":503,"path":504,"stem":505},"Складні типи — Owned Types та Complex Types (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fcomplex-types-owned-part1","01.csharp\u002F10.ef-core\u002F10.complex-types-owned-part1",{"title":507,"path":508,"stem":509},"Складні типи — Complex Types, Keyless Entities, Порівняння (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fcomplex-types-owned-part2","01.csharp\u002F10.ef-core\u002F10.complex-types-owned-part2",{"title":511,"path":512,"stem":513},"JSON Columns — Складні дані у JSON (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fjson-columns-part1","01.csharp\u002F10.ef-core\u002F11.json-columns-part1",{"title":515,"path":516,"stem":517},"JSON Columns — Value Comparers, Індекси, Провайдери (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fjson-columns-part2","01.csharp\u002F10.ef-core\u002F11.json-columns-part2",{"title":519,"path":520,"stem":521},"Успадкування — Абстрактні класи та TPH (Частина 1)","\u002Fcsharp\u002Fef-core\u002Finheritance-part1","01.csharp\u002F10.ef-core\u002F12.inheritance-part1",{"title":523,"path":524,"stem":525},"Успадкування — TPT, TPC та Порівняння Стратегій (Частина 2)","\u002Fcsharp\u002Fef-core\u002Finheritance-part2","01.csharp\u002F10.ef-core\u002F12.inheritance-part2",{"title":527,"path":528,"stem":529,"children":530},"Індекси, Обмеження та Схема (Частина 1)","\u002Fcsharp\u002Fef-core\u002Findexes-constraints-part1","01.csharp\u002F10.ef-core\u002F13.indexes-constraints-part1",[531],{"title":527,"path":528,"stem":529},{"title":533,"path":534,"stem":535,"children":536},"Індекси, Обмеження та Схема (Частина 2)","\u002Fcsharp\u002Fef-core\u002Findexes-constraints-part2","01.csharp\u002F10.ef-core\u002F13.indexes-constraints-part2",[537],{"title":533,"path":534,"stem":535},{"title":539,"path":540,"stem":541},"Seed Data — Початкові Дані (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fseeding-part1","01.csharp\u002F10.ef-core\u002F14.seeding-part1",{"title":543,"path":544,"stem":545},"Seed Data — SQL-скрипти, Bogus та Стратегії (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fseeding-part2","01.csharp\u002F10.ef-core\u002F14.seeding-part2",{"title":547,"path":548,"stem":549},"Global Query Filters — Глобальні Фільтри (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fglobal-query-filters-part1","01.csharp\u002F10.ef-core\u002F15.global-query-filters-part1",{"title":551,"path":552,"stem":553},"Global Query Filters — Підводні камені та Інтеграція (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fglobal-query-filters-part2","01.csharp\u002F10.ef-core\u002F15.global-query-filters-part2",{"title":555,"path":556,"stem":557},"LINQ-запити в EF Core (Частина 1)","\u002Fcsharp\u002Fef-core\u002Flinq-queries-part1","01.csharp\u002F10.ef-core\u002F16.linq-queries-part1",{"title":559,"path":560,"stem":561},"LINQ-запити в EF Core (Частина 2)","\u002Fcsharp\u002Fef-core\u002Flinq-queries-part2","01.csharp\u002F10.ef-core\u002F16.linq-queries-part2",{"title":563,"path":564,"stem":565},"Завантаження Пов'язаних Даних (Частина 1)","\u002Fcsharp\u002Fef-core\u002Floading-related-data-part1","01.csharp\u002F10.ef-core\u002F17.loading-related-data-part1",{"title":567,"path":568,"stem":569},"Завантаження Пов'язаних Даних (Частина 2)","\u002Fcsharp\u002Fef-core\u002Floading-related-data-part2","01.csharp\u002F10.ef-core\u002F17.loading-related-data-part2",{"title":571,"path":572,"stem":573},"Raw SQL, Views та Stored Procedures (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fraw-sql-part1","01.csharp\u002F10.ef-core\u002F18.raw-sql-part1",{"title":575,"path":576,"stem":577},"Raw SQL — Stored Procedures, DbFunction та Bulk Operations (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fraw-sql-part2","01.csharp\u002F10.ef-core\u002F18.raw-sql-part2",{"title":579,"path":580,"stem":581},"Продвинуті Запити — Compiled Queries, Bulk та Оптимізація (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fadvanced-queries-part1","01.csharp\u002F10.ef-core\u002F19.advanced-queries-part1",{"title":583,"path":584,"stem":585},"Продвинуті Запити — Query Tags, Bulk та Interceptors (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fadvanced-queries-part2","01.csharp\u002F10.ef-core\u002F19.advanced-queries-part2",{"title":587,"path":588,"stem":589},"Change Tracker — Відстеження Змін (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fchange-tracking-part1","01.csharp\u002F10.ef-core\u002F20.change-tracking-part1",{"title":591,"path":592,"stem":593},"Change Tracker — Графи Об'єктів та Disconnected (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fchange-tracking-part2","01.csharp\u002F10.ef-core\u002F20.change-tracking-part2",{"title":595,"path":596,"stem":597},"Збереження Даних та Транзакції (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fsaving-data-part1","01.csharp\u002F10.ef-core\u002F21.saving-data-part1",{"title":599,"path":600,"stem":601},"Збереження Даних — Concurrency та Outbox (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fsaving-data-part2","01.csharp\u002F10.ef-core\u002F21.saving-data-part2",{"title":603,"path":604,"stem":605},"Конкурентність та Блокування (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fconcurrency-part1","01.csharp\u002F10.ef-core\u002F22.concurrency-part1",{"title":607,"path":608,"stem":609},"Конкурентність — Дедлоки та Queue Processing (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fconcurrency-part2","01.csharp\u002F10.ef-core\u002F22.concurrency-part2",{"title":611,"path":612,"stem":613},"Міграції в EF Core — Основи (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fmigrations-basics-part1","01.csharp\u002F10.ef-core\u002F23.migrations-basics-part1",{"title":615,"path":616,"stem":617},"Міграції в EF Core — Основи (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fmigrations-basics-part2","01.csharp\u002F10.ef-core\u002F23.migrations-basics-part2",{"title":619,"path":620,"stem":621},"Міграції — Просунуті Сценарії (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fmigrations-advanced-part1","01.csharp\u002F10.ef-core\u002F24.migrations-advanced-part1",{"title":623,"path":624,"stem":625},"Міграції — Просунуті Сценарії (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fmigrations-advanced-part2","01.csharp\u002F10.ef-core\u002F24.migrations-advanced-part2",{"title":627,"path":628,"stem":629},"Управління Схемою та Database-First (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fschema-management-part1","01.csharp\u002F10.ef-core\u002F25.schema-management-part1",{"title":631,"path":632,"stem":633},"Управління Схемою та Database-First (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fschema-management-part2","01.csharp\u002F10.ef-core\u002F25.schema-management-part2",{"title":635,"path":636,"stem":637},"Продуктивність EF Core — Основи (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fperformance-fundamentals-part1","01.csharp\u002F10.ef-core\u002F26.performance-fundamentals-part1",{"title":639,"path":640,"stem":641},"Interceptors в EF Core (Частина 1)","\u002Fcsharp\u002Fef-core\u002Finterceptors-part1","01.csharp\u002F10.ef-core\u002F29.interceptors-part1",{"title":643,"path":644,"stem":645},"Interceptors в EF Core — Connection, Transaction та Materialization (Частина 2)","\u002Fcsharp\u002Fef-core\u002Finterceptors-part2","01.csharp\u002F10.ef-core\u002F29.interceptors-part2",{"title":647,"path":648,"stem":649},"План вивчення Entity Framework Core — Повний курс","\u002Fcsharp\u002Fef-core\u002Fimplementation_plan","01.csharp\u002F10.ef-core\u002Fimplementation_plan",{"title":651,"icon":652,"path":653,"stem":654,"children":655,"page":59},"ASP.NET","i-devicon-dotnetcore","\u002Fcsharp\u002Faspnet","01.csharp\u002F11.aspnet",[656,730,791,869,927,941,967,1057,1111,1182,1212,1289,1346],{"title":657,"icon":658,"path":659,"stem":660,"children":661,"page":59},"Minimal API","i-lucide-network","\u002Fcsharp\u002Faspnet\u002Fminimal-api","01.csharp\u002F11.aspnet\u002F01.minimal-api",[662,666,670,674,678,682,686,690,694,698,702,706,710,714,718,722,726],{"title":663,"path":664,"stem":665},"Вступ до ASP.NET та еволюція фреймворку","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fintroduction","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F01.introduction",{"title":667,"path":668,"stem":669},"Перший додаток на ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Ffirst-application","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F02.first-application",{"title":671,"path":672,"stem":673},"WebApplication, Builder та Dependency Injection","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fwebapplication-builder","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F03.webapplication-builder",{"title":675,"path":676,"stem":677},"Конвеєр запитів та Middleware","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Frequest-pipeline-middleware","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F04.request-pipeline-middleware",{"title":679,"path":680,"stem":681},"Маршрутизація в ASP.NET Core: Основи","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Frouting-basics","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F05.routing-basics",{"title":683,"path":684,"stem":685},"Маршрутизація в ASP.NET Core: Розширені можливості","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Frouting-advanced","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F06.routing-advanced",{"title":687,"path":688,"stem":689},"Статичні файли в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fstatic-files","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F07.static-files",{"title":691,"path":692,"stem":693},"Статичні Активи: MapStaticAssets (ASP.NET Core 9.0)","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fstatic-assets","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F08.static-assets",{"title":695,"path":696,"stem":697},"Конфігурація в ASP.NET Core: Основи","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fconfiguration-fundamentals","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F09.configuration-fundamentals",{"title":699,"path":700,"stem":701},"Конфігурація: Паттерн Options","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fconfiguration-options","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F10.configuration-options",{"title":703,"path":704,"stem":705},"Логування в ASP.NET Core: Основи","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Flogging-basics","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F11.logging-basics",{"title":707,"path":708,"stem":709},"Логування: Serilog та Middleware","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Flogging-advanced","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F12.logging-advanced",{"title":711,"path":712,"stem":713},"Управління станом: HttpContext.Items та Cookies","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fstate-management","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F13.state-management",{"title":715,"path":716,"stem":717},"Стан сесії: Sessions","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fsession-state","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F14.session-state",{"title":719,"path":720,"stem":721},"Структура проєкту: від хаосу до архітектури","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fproject-structure","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F15.project-structure",{"title":723,"path":724,"stem":725},"Scalar у Minimal API: повний проєкт і Fluent OpenAPI","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fscalar-openapi-fluent","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F16.scalar-openapi-fluent",{"title":727,"path":728,"stem":729},"Swagger \u002F Swashbuckle у Minimal API: окремий класичний шлях","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fswagger-swashbuckle","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F17.swagger-swashbuckle",{"title":731,"icon":658,"path":732,"stem":733,"children":734,"page":59},"API","\u002Fcsharp\u002Faspnet\u002Fapi","01.csharp\u002F11.aspnet\u002F02.api",[735,739,743,747,751,755,759,763,767,771,775,779,783,787],{"title":736,"path":737,"stem":738},"Що таке API. Клієнт-серверна архітектура","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fwhat-is-api","01.csharp\u002F11.aspnet\u002F02.api\u002F01.what-is-api",{"title":740,"path":741,"stem":742},"Формати даних: JSON, XML, TOML та бінарні формати","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fdata-formats","01.csharp\u002F11.aspnet\u002F02.api\u002F02.data-formats",{"title":744,"path":745,"stem":746},"Парадигми API та концепція REST","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fapi-paradigms-rest","01.csharp\u002F11.aspnet\u002F02.api\u002F03.api-paradigms-rest",{"title":748,"path":749,"stem":750},"HTTP-методи, статус-коди та заголовки","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fhttp-methods-status-codes","01.csharp\u002F11.aspnet\u002F02.api\u002F04.http-methods-status-codes",{"title":752,"path":753,"stem":754},"Організація HTTP API за принципами REST","\u002Fcsharp\u002Faspnet\u002Fapi\u002Frest-organizing","01.csharp\u002F11.aspnet\u002F02.api\u002F05.rest-organizing",{"title":756,"path":757,"stem":758},"Номенклатура URL та CRUD-операції","\u002Fcsharp\u002Faspnet\u002Fapi\u002Furl-nomenclature-crud","01.csharp\u002F11.aspnet\u002F02.api\u002F06.url-nomenclature-crud",{"title":760,"path":761,"stem":762},"Правила дизайну: іменування та стандарти","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fapi-design-naming","01.csharp\u002F11.aspnet\u002F02.api\u002F07.api-design-naming",{"title":764,"path":765,"stem":766},"Валідація, ліміти та обробка помилок","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fapi-design-validation","01.csharp\u002F11.aspnet\u002F02.api\u002F08.api-design-validation",{"title":768,"path":769,"stem":770},"Обробка помилок у Minimal API","\u002Fcsharp\u002Faspnet\u002Fapi\u002Ferror-handling-http","01.csharp\u002F11.aspnet\u002F02.api\u002F09.error-handling-http",{"title":772,"path":773,"stem":774},"Ідемпотентність та синхронізація стану","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fidempotency-sync","01.csharp\u002F11.aspnet\u002F02.api\u002F10.idempotency-sync",{"title":776,"path":777,"stem":778},"Пагінація та організація списків","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fpagination-lists","01.csharp\u002F11.aspnet\u002F02.api\u002F11.pagination-lists",{"title":780,"path":781,"stem":782},"Безпека API, кешування та інтернаціоналізація","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fsecurity-auth","01.csharp\u002F11.aspnet\u002F02.api\u002F12.security-auth",{"title":784,"path":785,"stem":786},"Процес проєктування API та документування","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fapi-design-process","01.csharp\u002F11.aspnet\u002F02.api\u002F13.api-design-process",{"title":788,"path":789,"stem":790},"OpenAPI: контракт, специфікація та документація API","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fopenapi","01.csharp\u002F11.aspnet\u002F02.api\u002F14.openapi",{"title":792,"icon":793,"path":794,"stem":795,"children":796,"page":59},"Auth","i-lucide-shield-check","\u002Fcsharp\u002Faspnet\u002Fauth","01.csharp\u002F11.aspnet\u002F03.auth",[797,801,805,809,813,817,821,825,829,833,837,841,845,849,853,857,861,865],{"title":798,"path":799,"stem":800},"Основи аутентифікації та авторизації","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fauth-fundamentals","01.csharp\u002F11.aspnet\u002F03.auth\u002F01.auth-fundamentals",{"title":802,"path":803,"stem":804},"JWT-аутентифікація","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fjwt-authentication","01.csharp\u002F11.aspnet\u002F03.auth\u002F02.jwt-authentication",{"title":806,"path":807,"stem":808},"Авторизація: ролі, політики та resource-based доступ","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fauthorization-policies","01.csharp\u002F11.aspnet\u002F03.auth\u002F03.authorization-policies",{"title":810,"path":811,"stem":812},"Cookie-аутентифікація та ASP.NET Core Identity","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fcookie-auth-identity","01.csharp\u002F11.aspnet\u002F03.auth\u002F04.cookie-auth-identity",{"title":814,"path":815,"stem":816},"JWT + Refresh Tokens (HttpOnly Cookie)","\u002Fcsharp\u002Faspnet\u002Fauth\u002F04b.identity-auth-jwt","01.csharp\u002F11.aspnet\u002F03.auth\u002F04b.identity-auth-jwt",{"title":818,"path":819,"stem":820},"Identity: Підтвердження Email та Скидання Пароля","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fidentity-email-confirmation","01.csharp\u002F11.aspnet\u002F03.auth\u002F05.identity-email-confirmation",{"title":822,"path":823,"stem":824},"Identity: Двофакторна Аутентифікація (2FA)","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fidentity-two-factor","01.csharp\u002F11.aspnet\u002F03.auth\u002F06.identity-two-factor",{"title":826,"path":827,"stem":828},"Identity: Внутрішня Архітектура та Кастомізація","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fidentity-internals","01.csharp\u002F11.aspnet\u002F03.auth\u002F07.identity-internals",{"title":830,"path":831,"stem":832},"OAuth 2.0 та зовнішні провайдери","\u002Fcsharp\u002Faspnet\u002Fauth\u002Foauth-external-providers","01.csharp\u002F11.aspnet\u002F03.auth\u002F08.oauth-external-providers",{"title":834,"path":835,"stem":836},"Безпека на практиці: CORS, HTTPS та захист від атак","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fsecurity-hardening","01.csharp\u002F11.aspnet\u002F03.auth\u002F09.security-hardening",{"title":838,"path":839,"stem":840},"Теорія OAuth 2.0: Поняття, Аналогії та Флоу","\u002Fcsharp\u002Faspnet\u002Fauth\u002Foauth-theory","01.csharp\u002F11.aspnet\u002F03.auth\u002F10.oauth-theory",{"title":842,"path":843,"stem":844},"OIDC, OAuth 2.0 та Keycloak в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Foidc-keycloak","01.csharp\u002F11.aspnet\u002F03.auth\u002F10.oidc-keycloak",{"title":846,"path":847,"stem":848},"API Keys аутентифікація в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fapi-keys","01.csharp\u002F11.aspnet\u002F03.auth\u002F11.api-keys",{"title":850,"path":851,"stem":852},"Rate Limiting та Throttling в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Frate-limiting","01.csharp\u002F11.aspnet\u002F03.auth\u002F12.rate-limiting",{"title":854,"path":855,"stem":856},"Refresh Token Rotation в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Frefresh-token-rotation","01.csharp\u002F11.aspnet\u002F03.auth\u002F13.refresh-token-rotation",{"title":858,"path":859,"stem":860},"Certificate Authentication та mTLS в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fcertificate-auth","01.csharp\u002F11.aspnet\u002F03.auth\u002F14.certificate-auth",{"title":862,"path":863,"stem":864},"RBAC, ABAC та ReBAC в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Frbac-abac-rebac","01.csharp\u002F11.aspnet\u002F03.auth\u002F15.rbac-abac-rebac",{"title":866,"path":867,"stem":868},"Multi-tenancy та ізоляція даних в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fmulti-tenancy","01.csharp\u002F11.aspnet\u002F03.auth\u002F16.multi-tenancy",{"title":870,"icon":871,"path":872,"stem":873,"children":874,"page":59},"Нотифікації","i-lucide-bell","\u002Fcsharp\u002Faspnet\u002Fnotifications","01.csharp\u002F11.aspnet\u002F04.notifications",[875,879,883,887,891,895,899,903,907,911,915,919,923],{"title":876,"path":877,"stem":878},"In-App нотифікації через базу даних","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fin-app-database-notifications","01.csharp\u002F11.aspnet\u002F04.notifications\u002F01.in-app-database-notifications",{"title":880,"path":881,"stem":882},"Polling: Регулярний запит оновлень","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fpolling","01.csharp\u002F11.aspnet\u002F04.notifications\u002F02.polling",{"title":884,"path":885,"stem":886},"Server-Sent Events: Однострімовий push від сервера","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fserver-sent-events","01.csharp\u002F11.aspnet\u002F04.notifications\u002F03.server-sent-events",{"title":888,"path":889,"stem":890},"WebSockets: Двостороннє з'єднання в реальному часі","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fwebsockets","01.csharp\u002F11.aspnet\u002F04.notifications\u002F04.websockets",{"title":892,"path":893,"stem":894},"SignalR: Абстракція над транспортами реального часу","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fsignalr","01.csharp\u002F11.aspnet\u002F04.notifications\u002F05.signalr",{"title":896,"path":897,"stem":898},"Background Services: Фонові задачі в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fbackground-services","01.csharp\u002F11.aspnet\u002F04.notifications\u002F06.background-services",{"title":900,"path":901,"stem":902},"Web Push нотифікації","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fweb-push","01.csharp\u002F11.aspnet\u002F04.notifications\u002F07.web-push",{"title":904,"path":905,"stem":906},"Email нотифікації","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Femail-notifications","01.csharp\u002F11.aspnet\u002F04.notifications\u002F08.email-notifications",{"title":908,"path":909,"stem":910},"Порівняння підходів: Як вибрати правильну технологію нотифікацій","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fchoosing-the-right-approach","01.csharp\u002F11.aspnet\u002F04.notifications\u002F09.choosing-the-right-approach",{"title":912,"path":913,"stem":914},"Hangfire: Надійне планування фонових задач","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fhangfire","01.csharp\u002F11.aspnet\u002F04.notifications\u002F10.hangfire",{"title":916,"path":917,"stem":918},"Практика: Конвертація зображень у WebP через Hangfire","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fhangfire-image-webp","01.csharp\u002F11.aspnet\u002F04.notifications\u002F11.hangfire-image-webp",{"title":920,"path":921,"stem":922},"Практика: Підготовка відео до HLS-стрімінгу через Hangfire","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fhangfire-video-hls","01.csharp\u002F11.aspnet\u002F04.notifications\u002F12.hangfire-video-hls",{"title":924,"path":925,"stem":926},"Telegram-нотифікації: від одного повідомлення до масових розсилок і мульти-канального підходу","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Ftelegram-notifications","01.csharp\u002F11.aspnet\u002F04.notifications\u002F13.telegram-notifications",{"title":928,"icon":929,"path":930,"stem":931,"children":932,"page":59},"Інтернаціоналізація","i-lucide-languages","\u002Fcsharp\u002Faspnet\u002Fi18n","01.csharp\u002F11.aspnet\u002F05.i18n",[933,937],{"title":934,"path":935,"stem":936},"Інтернаціоналізація (i18n) у Minimal API: від A до Я","\u002Fcsharp\u002Faspnet\u002Fi18n\u002Finternationalization","01.csharp\u002F11.aspnet\u002F05.i18n\u002F01.internationalization",{"title":938,"path":939,"stem":940},"Humanizer: людиномовні рядки у .NET","\u002Fcsharp\u002Faspnet\u002Fi18n\u002Fhumanizer","01.csharp\u002F11.aspnet\u002F05.i18n\u002F02.humanizer",{"title":942,"icon":943,"path":944,"stem":945,"children":946,"page":59},"Кешування","i-lucide-layers","\u002Fcsharp\u002Faspnet\u002Fcaching","01.csharp\u002F11.aspnet\u002F06.caching",[947,951,955,959,963],{"title":948,"path":949,"stem":950},"Огляд кешування: чотири рівні і коли що обирати","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Fcaching","01.csharp\u002F11.aspnet\u002F06.caching\u002F01.caching",{"title":952,"path":953,"stem":954},"IMemoryCache: кеш в оперативній пам'яті","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Fmemory-cache","01.csharp\u002F11.aspnet\u002F06.caching\u002F02.memory-cache",{"title":956,"path":957,"stem":958},"IDistributedCache і Redis: розподілений кеш","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Fdistributed-cache","01.csharp\u002F11.aspnet\u002F06.caching\u002F03.distributed-cache",{"title":960,"path":961,"stem":962},"Response Cache: HTTP-кешування через Cache-Control","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Fresponse-cache","01.csharp\u002F11.aspnet\u002F06.caching\u002F04.response-cache",{"title":964,"path":965,"stem":966},"Output Cache: серверний кеш HTTP-відповідей (.NET 7+)","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Foutput-cache","01.csharp\u002F11.aspnet\u002F06.caching\u002F05.output-cache",{"title":968,"icon":969,"path":970,"stem":971,"children":972,"page":59},"Тестування","i-lucide-test-tube","\u002Fcsharp\u002Faspnet\u002Ftesting","01.csharp\u002F11.aspnet\u002F07.testing",[973,977,981,985,989,993,997,1001,1005,1009,1013,1017,1021,1025,1029,1033,1037,1041,1045,1049,1053],{"title":974,"path":975,"stem":976},"Що таке тестування? Від інтуїції до науки","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fwhat-is-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F01.what-is-testing",{"title":978,"path":979,"stem":980},"Піраміда тестування — Стратегія, а не Догма","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftesting-pyramid","01.csharp\u002F11.aspnet\u002F07.testing\u002F02.testing-pyramid",{"title":982,"path":983,"stem":984},"Дві Школи Тестування — Лондон проти Детройту","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftesting-schools","01.csharp\u002F11.aspnet\u002F07.testing\u002F03.testing-schools",{"title":986,"path":987,"stem":988},"TDD та BDD — Тести як Дизайн-інструмент","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftdd-and-bdd","01.csharp\u002F11.aspnet\u002F07.testing\u002F04.tdd-and-bdd",{"title":990,"path":991,"stem":992},"Що саме тестувати — Техніки аналізу та Циклomatична складність","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fwhat-to-test","01.csharp\u002F11.aspnet\u002F07.testing\u002F05.what-to-test",{"title":994,"path":995,"stem":996},"Тестові Фреймворки — Навіщо вони і що всередині","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftest-frameworks","01.csharp\u002F11.aspnet\u002F07.testing\u002F06.test-frameworks",{"title":998,"path":999,"stem":1000},"xUnit — Факти, Теорії та Lifecycle тестів","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fxunit-basics","01.csharp\u002F11.aspnet\u002F07.testing\u002F07.xunit-basics",{"title":1002,"path":1003,"stem":1004},"xUnit Advanced — Fixtures, Кастомізація та Розширення","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fxunit-advanced","01.csharp\u002F11.aspnet\u002F07.testing\u002F08.xunit-advanced",{"title":1006,"path":1007,"stem":1008},"Moq — Глибоке занурення в мокування","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fmocking-with-moq","01.csharp\u002F11.aspnet\u002F07.testing\u002F09.mocking-with-moq",{"title":1010,"path":1011,"stem":1012},"Тестування Баз Даних — EF Core, SQLite та Testcontainers","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fdatabase-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F10.database-testing",{"title":1014,"path":1015,"stem":1016},"Integration Testing — Частина 1 [Теорія та WebApplicationFactory]","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fintegration-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F11.integration-testing",{"title":1018,"path":1019,"stem":1020},"Інтеграційне тестування — Практика","\u002Fcsharp\u002Faspnet\u002Ftesting\u002F11a.integration-testing-practice","01.csharp\u002F11.aspnet\u002F07.testing\u002F11a.integration-testing-practice",{"title":1022,"path":1023,"stem":1024},"Integration Testing — Частина 2 [Просунуті Сценарії та Testcontainers]","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fintegration-testing-advanced","01.csharp\u002F11.aspnet\u002F07.testing\u002F12.integration-testing-advanced",{"title":1026,"path":1027,"stem":1028},"Професійний Postman: Колекції, Змінні та GitHub Інтеграція","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fpostman-professional","01.csharp\u002F11.aspnet\u002F07.testing\u002F13.postman-professional",{"title":1030,"path":1031,"stem":1032},"HttpClient у Тестах Частина 1: Архітектура та MockHttpMessageHandler","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fhttpclient-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F14.httpclient-testing",{"title":1034,"path":1035,"stem":1036},"HttpClient у Тестах Частина 2: WireMock.Net та Resilience","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fwiremock-net","01.csharp\u002F11.aspnet\u002F07.testing\u002F15.wiremock-net",{"title":1038,"path":1039,"stem":1040},"Патерни та Анти-патерни Тестування: Test Smells","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftesting-patterns","01.csharp\u002F11.aspnet\u002F07.testing\u002F16.testing-patterns",{"title":1042,"path":1043,"stem":1044},"Просунуті інструменти: Time, Snapshots та Властивості","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fadvanced-testing-tools","01.csharp\u002F11.aspnet\u002F07.testing\u002F17.advanced-testing-tools",{"title":1046,"path":1047,"stem":1048},"Тестування Архітектури з NetArchTest","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Farchitecture-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F18.architecture-testing",{"title":1050,"path":1051,"stem":1052},"Тестування Продуктивності: BenchmarkDotNet, NBomber та k6","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fperformance-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F19.performance-testing",{"title":1054,"path":1055,"stem":1056},"Залишок плану для курсу \"Тестування ASP.NET Minimal API\"","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fremaining_plan","01.csharp\u002F11.aspnet\u002F07.testing\u002Fremaining_plan",{"title":1058,"icon":1059,"path":1060,"stem":1061,"children":1062,"page":59},"Платежі","i-lucide-credit-card","\u002Fcsharp\u002Faspnet\u002Fpayments","01.csharp\u002F11.aspnet\u002F08.payments",[1063,1067,1071,1075,1079,1083,1087,1091,1095,1099,1103,1107],{"title":1064,"path":1065,"stem":1066},"Основи платіжної інфраструктури","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fpayment-fundamentals","01.csharp\u002F11.aspnet\u002F08.payments\u002F01.payment-fundamentals",{"title":1068,"path":1069,"stem":1070},"Методи оплати в Україні","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fpayment-methods-ukraine","01.csharp\u002F11.aspnet\u002F08.payments\u002F02.payment-methods-ukraine",{"title":1072,"path":1073,"stem":1074},"PCI DSS та безпека платежів","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fpci-dss-security","01.csharp\u002F11.aspnet\u002F08.payments\u002F03.pci-dss-security",{"title":1076,"path":1077,"stem":1078},"Архітектура платіжної підсистеми","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fpayment-architecture","01.csharp\u002F11.aspnet\u002F08.payments\u002F04.payment-architecture",{"title":1080,"path":1081,"stem":1082},"Інтеграція LiqPay (ПриватБанк)","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fliqpay-integration","01.csharp\u002F11.aspnet\u002F08.payments\u002F05.liqpay-integration",{"title":1084,"path":1085,"stem":1086},"Інтеграція Monobank Acquiring API","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fmonobank-acquiring","01.csharp\u002F11.aspnet\u002F08.payments\u002F06.monobank-acquiring",{"title":1088,"path":1089,"stem":1090},"Інтеграція Stripe","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fstripe-integration","01.csharp\u002F11.aspnet\u002F08.payments\u002F07.stripe-integration",{"title":1092,"path":1093,"stem":1094},"Webhooks — глибоке занурення","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fwebhooks-deep-dive","01.csharp\u002F11.aspnet\u002F08.payments\u002F08.webhooks-deep-dive",{"title":1096,"path":1097,"stem":1098},"Підписки та рекурентні платежі","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fsubscriptions-recurring","01.csharp\u002F11.aspnet\u002F08.payments\u002F09.subscriptions-recurring",{"title":1100,"path":1101,"stem":1102},"Повернення коштів та диспути","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Frefunds-disputes","01.csharp\u002F11.aspnet\u002F08.payments\u002F10.refunds-disputes",{"title":1104,"path":1105,"stem":1106},"Тестування платіжних інтеграцій","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Ftesting-payments","01.csharp\u002F11.aspnet\u002F08.payments\u002F11.testing-payments",{"title":1108,"path":1109,"stem":1110},"Чекліст виходу в Production","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fproduction-checklist","01.csharp\u002F11.aspnet\u002F08.payments\u002F12.production-checklist",{"title":1112,"icon":1113,"items":1114,"path":1127,"stem":1128,"children":1129,"page":59},"Популярні бібліотеки","lucide:box",[1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126],"01.fluent-validation","02.mapster","03.erroror-result-pattern","04.serilog","05.mediatr","06.polly","07.health-checks","08.feature-management","09.fluent-email","10.quest-pdf","11.bogus","12.humanizer-guard","\u002Fcsharp\u002Faspnet\u002Flibraries","01.csharp\u002F11.aspnet\u002F09.libraries",[1130,1134,1138,1142,1146,1150,1154,1158,1162,1166,1170,1174,1178],{"title":1131,"path":1132,"stem":1133},"Валідація з FluentValidation в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Ffluent-validation","01.csharp\u002F11.aspnet\u002F09.libraries\u002F01.fluent-validation",{"title":1135,"path":1136,"stem":1137},"Маппінг об","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fmapster","01.csharp\u002F11.aspnet\u002F09.libraries\u002F02.mapster",{"title":1139,"path":1140,"stem":1141},"Обробка помилок з ErrorOr та Result Pattern в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Ferroror-result-pattern","01.csharp\u002F11.aspnet\u002F09.libraries\u002F03.erroror-result-pattern",{"title":1143,"path":1144,"stem":1145},"Структуроване логування з Serilog в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fserilog","01.csharp\u002F11.aspnet\u002F09.libraries\u002F04.serilog",{"title":1147,"path":1148,"stem":1149},"CQRS та Mediator з MediatR в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fmediatr","01.csharp\u002F11.aspnet\u002F09.libraries\u002F05.mediatr",{"title":1151,"path":1152,"stem":1153},"Відмовостійкість з Polly в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fpolly","01.csharp\u002F11.aspnet\u002F09.libraries\u002F06.polly",{"title":1155,"path":1156,"stem":1157},"Health Checks в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fhealth-checks","01.csharp\u002F11.aspnet\u002F09.libraries\u002F07.health-checks",{"title":1159,"path":1160,"stem":1161},"Feature Management та Feature Flags в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Ffeature-management","01.csharp\u002F11.aspnet\u002F09.libraries\u002F08.feature-management",{"title":1163,"path":1164,"stem":1165},"Відправка Email з FluentEmail в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Ffluent-email","01.csharp\u002F11.aspnet\u002F09.libraries\u002F09.fluent-email",{"title":1167,"path":1168,"stem":1169},"Генерація PDF з QuestPDF в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fquest-pdf","01.csharp\u002F11.aspnet\u002F09.libraries\u002F10.quest-pdf",{"title":1171,"path":1172,"stem":1173},"Генерація тестових даних з Bogus в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fbogus","01.csharp\u002F11.aspnet\u002F09.libraries\u002F11.bogus",{"title":1175,"path":1176,"stem":1177},"Humanizer та Guard Clauses в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fhumanizer-guard","01.csharp\u002F11.aspnet\u002F09.libraries\u002F12.humanizer-guard",{"title":1179,"path":1180,"stem":1181},"План модуля 10.libraries — Популярні бібліотеки ASP.NET","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fplan","01.csharp\u002F11.aspnet\u002F09.libraries\u002Fplan",{"title":1183,"icon":1184,"path":1185,"stem":1186,"children":1187,"page":59},"Razor Pages","i-lucide-layout-template","\u002Fcsharp\u002Faspnet\u002Frazor-pages","01.csharp\u002F11.aspnet\u002F10.razor-pages",[1188,1192,1196,1200,1204,1208],{"title":1189,"path":1190,"stem":1191},"Від Minimal API до Razor Pages: концептуальний перехід","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Ffrom-minimal-api","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F01.from-minimal-api",{"title":1193,"path":1194,"stem":1195},"PageModel: логіка сторінки Razor Pages","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Fpage-model","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F02.page-model",{"title":1197,"path":1198,"stem":1199},"Razor синтаксис: шаблонізатор у .cshtml","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Frazor-syntax","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F03.razor-syntax",{"title":1201,"path":1202,"stem":1203},"Tag Helpers: типізований HTML","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Ftag-helpers","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F04.tag-helpers",{"title":1205,"path":1206,"stem":1207},"Форми і валідація: повний цикл обробки даних","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Fforms-validation","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F05.forms-validation",{"title":1209,"path":1210,"stem":1211},"Практичний проєкт: TaskManager на Razor Pages","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Fproject-task-manager","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F06.project-task-manager",{"title":1213,"path":1214,"stem":1215,"children":1216,"page":59},"ASP.NET Core MVC","\u002Fcsharp\u002Faspnet\u002Fmvc","01.csharp\u002F11.aspnet\u002F11.mvc",[1217,1221,1225,1229,1233,1237,1241,1245,1249,1253,1257,1261,1265,1269,1273,1277,1281,1285],{"title":1218,"path":1219,"stem":1220},"Патерн MVC: архітектура, що змінила веб","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fmvc-pattern","01.csharp\u002F11.aspnet\u002F11.mvc\u002F01.mvc-pattern",{"title":1222,"path":1223,"stem":1224},"Від Razor Pages до MVC: концептуальний перехід","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Ffrom-razor-pages","01.csharp\u002F11.aspnet\u002F11.mvc\u002F02.from-razor-pages",{"title":1226,"path":1227,"stem":1228},"Controllers та Actions: серце MVC","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fcontrollers-actions","01.csharp\u002F11.aspnet\u002F11.mvc\u002F03.controllers-actions",{"title":1230,"path":1231,"stem":1232},"Маршрутизація в MVC: Convention vs Attribute Routing","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Frouting-mvc","01.csharp\u002F11.aspnet\u002F11.mvc\u002F04.routing-mvc",{"title":1234,"path":1235,"stem":1236},"Model Binding: від HTTP до C#","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fmodel-binding","01.csharp\u002F11.aspnet\u002F11.mvc\u002F05.model-binding",{"title":1238,"path":1239,"stem":1240},"Views, ViewData, ViewBag, TempData і ViewModel","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fviews-viewdata-tempdata","01.csharp\u002F11.aspnet\u002F11.mvc\u002F06.views-viewdata-tempdata",{"title":1242,"path":1243,"stem":1244},"Filters: аспектно-орієнтоване програмування в MVC","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Ffilters","01.csharp\u002F11.aspnet\u002F11.mvc\u002F07.filters",{"title":1246,"path":1247,"stem":1248},"Areas: структурування великих застосунків","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fareas","01.csharp\u002F11.aspnet\u002F11.mvc\u002F08.areas",{"title":1250,"path":1251,"stem":1252},"View Components: повторювані незалежні блоки UI","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fview-components","01.csharp\u002F11.aspnet\u002F11.mvc\u002F09.view-components",{"title":1254,"path":1255,"stem":1256},"Display та Editor Templates","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fdisplay-editor-templates","01.csharp\u002F11.aspnet\u002F11.mvc\u002F10.display-editor-templates",{"title":1258,"path":1259,"stem":1260},"Валідація: IValidatableObject та FluentValidation","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fvalidation-advanced","01.csharp\u002F11.aspnet\u002F11.mvc\u002F11.validation-advanced",{"title":1262,"path":1263,"stem":1264},"HTMX: інтерактивність через HTML-атрибути","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fhtmx","01.csharp\u002F11.aspnet\u002F11.mvc\u002F12.htmx",{"title":1266,"path":1267,"stem":1268},"HTMX у ASP.NET Core MVC: серверна інтеграція","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fajax-htmx-mvc","01.csharp\u002F11.aspnet\u002F11.mvc\u002F13.ajax-htmx-mvc",{"title":1270,"path":1271,"stem":1272},"Практичний проєкт: Каталог товарів з HTMX","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fhtmx-project","01.csharp\u002F11.aspnet\u002F11.mvc\u002F14.htmx-project",{"title":1274,"path":1275,"stem":1276},"Завантаження та обробка файлів","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Ffile-upload","01.csharp\u002F11.aspnet\u002F11.mvc\u002F15.file-upload",{"title":1278,"path":1279,"stem":1280},"Глобалізація та Локалізація MVC","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fglobalization-localization","01.csharp\u002F11.aspnet\u002F11.mvc\u002F16.globalization-localization",{"title":1282,"path":1283,"stem":1284},"Підсумковий проєкт: Блог-платформа","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fmvc-project","01.csharp\u002F11.aspnet\u002F11.mvc\u002F17.mvc-project",{"title":1286,"path":1287,"stem":1288},"План курсу: ASP.NET Core MVC","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fplan","01.csharp\u002F11.aspnet\u002F11.mvc\u002Fplan",{"title":1290,"path":1291,"stem":1292,"children":1293,"page":59},"Web Api","\u002Fcsharp\u002Faspnet\u002Fweb-api","01.csharp\u002F11.aspnet\u002F12.web-api",[1294,1298,1302,1306,1310,1314,1318,1322,1326,1330,1334,1338,1342],{"title":1295,"path":1296,"stem":1297},"Від Minimal API до Controller-based API","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Ffrom-minimal-api-to-controllers","01.csharp\u002F11.aspnet\u002F12.web-api\u002F01.from-minimal-api-to-controllers",{"title":1299,"path":1300,"stem":1301},"ControllerBase, ActionResult\u003CT> та Response Types","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fcontroller-base-actionresult","01.csharp\u002F11.aspnet\u002F12.web-api\u002F02.controller-base-actionresult",{"title":1303,"path":1304,"stem":1305},"Content Negotiation - JSON, XML та власні форматери","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fcontent-negotiation","01.csharp\u002F11.aspnet\u002F12.web-api\u002F03.content-negotiation",{"title":1307,"path":1308,"stem":1309},"Версіонування API","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fapi-versioning","01.csharp\u002F11.aspnet\u002F12.web-api\u002F04.api-versioning",{"title":1311,"path":1312,"stem":1313},"ProblemDetails та структурована обробка помилок","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fproblemdetails-error-handling","01.csharp\u002F11.aspnet\u002F12.web-api\u002F05.problemdetails-error-handling",{"title":1315,"path":1316,"stem":1317},"Фільтри у Web API контексті","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Ffilters-for-api","01.csharp\u002F11.aspnet\u002F12.web-api\u002F06.filters-for-api",{"title":1319,"path":1320,"stem":1321},"Пагінація, фільтрація та сортування","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fpagination-filtering-sorting","01.csharp\u002F11.aspnet\u002F12.web-api\u002F07.pagination-filtering-sorting",{"title":1323,"path":1324,"stem":1325},"HATEOAS та Resource Expansion","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fhateoas-resource-expansion","01.csharp\u002F11.aspnet\u002F12.web-api\u002F08.hateoas-resource-expansion",{"title":1327,"path":1328,"stem":1329},"Гібридна архітектура - Minimal API + Controllers","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fminimal-api-vs-controllers-hybrid","01.csharp\u002F11.aspnet\u002F12.web-api\u002F09.minimal-api-vs-controllers-hybrid",{"title":1331,"path":1332,"stem":1333},"Документація API - Swashbuckle, NSwag та генерація клієнтів","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fapi-documentation-generation","01.csharp\u002F11.aspnet\u002F12.web-api\u002F10.api-documentation-generation",{"title":1335,"path":1336,"stem":1337},"Health Checks та моніторинг API","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fhealth-checks-monitoring","01.csharp\u002F11.aspnet\u002F12.web-api\u002F11.health-checks-monitoring",{"title":1339,"path":1340,"stem":1341},"Підсумковий проєкт - Production-Ready REST API","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fweb-api-project","01.csharp\u002F11.aspnet\u002F12.web-api\u002F12.web-api-project",{"title":1343,"path":1344,"stem":1345},"План курсу: ASP.NET Core Web API (Controllers)","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fplan","01.csharp\u002F11.aspnet\u002F12.web-api\u002Fplan",{"title":1347,"icon":1348,"path":1349,"stem":1350,"children":1351,"page":59},"Моніторинг","i-lucide-activity","\u002Fcsharp\u002Faspnet\u002Fmonitoring","01.csharp\u002F11.aspnet\u002F13.monitoring",[1352,1356,1360],{"title":1353,"path":1354,"stem":1355},"Спостережуваність: від console.log до production-систем","\u002Fcsharp\u002Faspnet\u002Fmonitoring\u002Fobservability-intro","01.csharp\u002F11.aspnet\u002F13.monitoring\u002F01.observability-intro",{"title":1357,"path":1358,"stem":1359},"Health Checks: перший рівень observability","\u002Fcsharp\u002Faspnet\u002Fmonitoring\u002Fhealth-checks","01.csharp\u002F11.aspnet\u002F13.monitoring\u002F02.health-checks",{"title":1361,"path":1362,"stem":1363},"Вбудовані метрики .NET 10 та System.Diagnostics.Metrics","\u002Fcsharp\u002Faspnet\u002Fmonitoring\u002Fdotnet-metrics","01.csharp\u002F11.aspnet\u002F13.monitoring\u002F03.dotnet-metrics",{"title":1365,"icon":1366,"path":1367,"stem":1368,"children":1369,"page":59},"Desktop UI","i-lucide-app-window","\u002Fcsharp\u002Fdesktop-ui","01.csharp\u002F12.desktop-ui",[1370,1374,1378,1382,1386,1390,1394,1398,1402,1406,1410,1414,1418,1422,1426,1430,1434,1438,1442,1446,1450,1454,1458,1462,1466,1470,1474,1478,1482,1486,1490,1494,1498,1502,1506,1510,1514,1518,1522,1526,1530,1534,1538,1542,1546,1550,1554,1558,1562,1566,1570,1574,1578,1582,1586,1590,1594,1598,1602,1606,1610,1614,1618,1622,1626,1630,1634,1638,1642,1646,1650],{"title":1371,"path":1372,"stem":1373},"Що таке десктопна розробка?","\u002Fcsharp\u002Fdesktop-ui\u002Fwhat-is-desktop-dev","01.csharp\u002F12.desktop-ui\u002F01.what-is-desktop-dev",{"title":1375,"path":1376,"stem":1377},"Архітектура WPF — як влаштований графічний інтерфейс","\u002Fcsharp\u002Fdesktop-ui\u002Fwpf-architecture","01.csharp\u002F12.desktop-ui\u002F02.wpf-architecture",{"title":1379,"path":1380,"stem":1381},"Перший WPF-проєкт — від нуля до вікна","\u002Fcsharp\u002Fdesktop-ui\u002Ffirst-wpf-app","01.csharp\u002F12.desktop-ui\u002F03.first-wpf-app",{"title":1383,"path":1384,"stem":1385},"Перший Avalonia-проєкт: WPF для всіх платформ","\u002Fcsharp\u002Fdesktop-ui\u002F03a.first-avalonia-app","01.csharp\u002F12.desktop-ui\u002F03a.first-avalonia-app",{"title":1387,"path":1388,"stem":1389},"XAML: декларативний інтерфейс","\u002Fcsharp\u002Fdesktop-ui\u002Fxaml-basics","01.csharp\u002F12.desktop-ui\u002F04.xaml-basics",{"title":1391,"path":1392,"stem":1393},"Fluent UI у WPF — сучасний дизайн Windows 11","\u002Fcsharp\u002Fdesktop-ui\u002F04a.wpf-fluent-ui","01.csharp\u002F12.desktop-ui\u002F04a.wpf-fluent-ui",{"title":1395,"path":1396,"stem":1397},"WPF UI — сучасна бібліотека Fluent контролів","\u002Fcsharp\u002Fdesktop-ui\u002F04b.wpf-ui-library","01.csharp\u002F12.desktop-ui\u002F04b.wpf-ui-library",{"title":1399,"path":1400,"stem":1401},"HandyControl — велика бібліотека UI контролів для WPF","\u002Fcsharp\u002Fdesktop-ui\u002F04c.handycontrol-library","01.csharp\u002F12.desktop-ui\u002F04c.handycontrol-library",{"title":1403,"path":1404,"stem":1405},"Простори імен та ресурси XAML","\u002Fcsharp\u002Fdesktop-ui\u002Fxaml-namespaces-resources","01.csharp\u002F12.desktop-ui\u002F05.xaml-namespaces-resources",{"title":1407,"path":1408,"stem":1409},"XAML в Avalonia: ключові відмінності від WPF","\u002Fcsharp\u002Fdesktop-ui\u002F05a.avalonia-xaml-differences","01.csharp\u002F12.desktop-ui\u002F05a.avalonia-xaml-differences",{"title":1411,"path":1412,"stem":1413},"Розширення розмітки XAML (Markup Extensions)","\u002Fcsharp\u002Fdesktop-ui\u002Fxaml-markup-extensions","01.csharp\u002F12.desktop-ui\u002F06.xaml-markup-extensions",{"title":1415,"path":1416,"stem":1417},"Панелі Layout: StackPanel, WrapPanel, DockPanel","\u002Fcsharp\u002Fdesktop-ui\u002Flayout-panels-part1","01.csharp\u002F12.desktop-ui\u002F07.layout-panels-part1",{"title":1419,"path":1420,"stem":1421},"Grid, Canvas, UniformGrid","\u002Fcsharp\u002Fdesktop-ui\u002Flayout-panels-part2","01.csharp\u002F12.desktop-ui\u002F07.layout-panels-part2",{"title":1423,"path":1424,"stem":1425},"Просунуті техніки Layout","\u002Fcsharp\u002Fdesktop-ui\u002Flayout-advanced","01.csharp\u002F12.desktop-ui\u002F08.layout-advanced",{"title":1427,"path":1428,"stem":1429},"Адаптивний Layout та найкращі практики","\u002Fcsharp\u002Fdesktop-ui\u002Flayout-responsive","01.csharp\u002F12.desktop-ui\u002F09.layout-responsive",{"title":1431,"path":1432,"stem":1433},"Layout в Avalonia: відмінності та нові можливості","\u002Fcsharp\u002Fdesktop-ui\u002F09a.layout-avalonia","01.csharp\u002F12.desktop-ui\u002F09a.layout-avalonia",{"title":1435,"path":1436,"stem":1437},"Button, Image, ProgressBar та інші базові контроли","\u002Fcsharp\u002Fdesktop-ui\u002Fbasic-controls","01.csharp\u002F12.desktop-ui\u002F10.basic-controls",{"title":1439,"path":1440,"stem":1441},"Контроли в Avalonia: відмінності від WPF","\u002Fcsharp\u002Fdesktop-ui\u002F10a.controls-avalonia","01.csharp\u002F12.desktop-ui\u002F10a.controls-avalonia",{"title":1443,"path":1444,"stem":1445},"Текстові контроли — TextBlock, TextBox, RichTextBox","\u002Fcsharp\u002Fdesktop-ui\u002Ftext-controls","01.csharp\u002F12.desktop-ui\u002F11.text-controls",{"title":1447,"path":1448,"stem":1449},"Контроли вибору — CheckBox, RadioButton, ComboBox, ListBox, DatePicker","\u002Fcsharp\u002Fdesktop-ui\u002Fselection-controls","01.csharp\u002F12.desktop-ui\u002F12.selection-controls",{"title":1451,"path":1452,"stem":1453},"Content Model — GroupBox, Expander, TabControl, StatusBar","\u002Fcsharp\u002Fdesktop-ui\u002Fcontent-controls","01.csharp\u002F12.desktop-ui\u002F13.content-controls",{"title":1455,"path":1456,"stem":1457},"UI\u002FUX принципи десктопних застосунків","\u002Fcsharp\u002Fdesktop-ui\u002F13a.ui-ux-principles","01.csharp\u002F12.desktop-ui\u002F13a.ui-ux-principles",{"title":1459,"path":1460,"stem":1461},"Dependency Properties — Концепція та Value Resolution","\u002Fcsharp\u002Fdesktop-ui\u002Fdependency-properties-part1","01.csharp\u002F12.desktop-ui\u002F14.dependency-properties-part1",{"title":1463,"path":1464,"stem":1465},"Avalonia Property System — StyledProperty та DirectProperty","\u002Fcsharp\u002Fdesktop-ui\u002F14a.avalonia-property-system","01.csharp\u002F12.desktop-ui\u002F14a.avalonia-property-system",{"title":1467,"path":1468,"stem":1469},"Attached Properties — Властивості без меж","\u002Fcsharp\u002Fdesktop-ui\u002Fattached-properties","01.csharp\u002F12.desktop-ui\u002F15.attached-properties",{"title":1471,"path":1472,"stem":1473},"Routed Events — Маршрутизація подій у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Frouted-events","01.csharp\u002F12.desktop-ui\u002F16.routed-events",{"title":1475,"path":1476,"stem":1477},"Data Binding — Від Code-Behind до Декларативності","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-binding-basics-part1","01.csharp\u002F12.desktop-ui\u002F17.data-binding-basics-part1",{"title":1479,"path":1480,"stem":1481},"INotifyPropertyChanged — Живе оновлення UI","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-binding-basics-part2","01.csharp\u002F12.desktop-ui\u002F17.data-binding-basics-part2",{"title":1483,"path":1484,"stem":1485},"Compiled Bindings в Avalonia — Безпека на етапі компіляції","\u002Fcsharp\u002Fdesktop-ui\u002F17a.avalonia-compiled-bindings","01.csharp\u002F12.desktop-ui\u002F17a.avalonia-compiled-bindings",{"title":1487,"path":1488,"stem":1489},"Просунутий Data Binding — ElementName, RelativeSource, MultiBinding","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-binding-advanced","01.csharp\u002F12.desktop-ui\u002F18.data-binding-advanced",{"title":1491,"path":1492,"stem":1493},"Value Converters — Перетворення типів даних у Data Binding","\u002Fcsharp\u002Fdesktop-ui\u002Fvalue-converters","01.csharp\u002F12.desktop-ui\u002F19.value-converters",{"title":1495,"path":1496,"stem":1497},"Data Templates — Візуалізація об'єктів у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-templates","01.csharp\u002F12.desktop-ui\u002F20.data-templates",{"title":1499,"path":1500,"stem":1501},"Collections Binding Part 1 — ObservableCollection та ItemsControl","\u002Fcsharp\u002Fdesktop-ui\u002Fcollections-binding-part1","01.csharp\u002F12.desktop-ui\u002F21.collections-binding-part1",{"title":1503,"path":1504,"stem":1505},"Collections Binding Part 2 — ICollectionView, Filtering, Sorting та Virtualization","\u002Fcsharp\u002Fdesktop-ui\u002Fcollections-binding-part2","01.csharp\u002F12.desktop-ui\u002F21.collections-binding-part2",{"title":1507,"path":1508,"stem":1509},"MVVM Pattern — Від Spaghetti Code до архітектури","\u002Fcsharp\u002Fdesktop-ui\u002Fmvvm-pattern","01.csharp\u002F12.desktop-ui\u002F22.mvvm-pattern",{"title":1511,"path":1512,"stem":1513},"ViewModel Implementation — Від BaseViewModel до валідації","\u002Fcsharp\u002Fdesktop-ui\u002Fviewmodel-implementation","01.csharp\u002F12.desktop-ui\u002F23.viewmodel-implementation",{"title":1515,"path":1516,"stem":1517},"Commands — Від event handlers до декларативних команд","\u002Fcsharp\u002Fdesktop-ui\u002Fcommands","01.csharp\u002F12.desktop-ui\u002F24.commands",{"title":1519,"path":1520,"stem":1521},"MVVM Toolkit — MVVM без boilerplate через Source Generators","\u002Fcsharp\u002Fdesktop-ui\u002Fmvvm-toolkit","01.csharp\u002F12.desktop-ui\u002F25.mvvm-toolkit",{"title":1523,"path":1524,"stem":1525},"Messenger Pattern — Комунікація між ViewModel без прямих посилань","\u002Fcsharp\u002Fdesktop-ui\u002Fmessenger-pattern","01.csharp\u002F12.desktop-ui\u002F26.messenger-pattern",{"title":1527,"path":1528,"stem":1529},"Стилі WPF — CSS для десктопу","\u002Fcsharp\u002Fdesktop-ui\u002Fstyles-basics","01.csharp\u002F12.desktop-ui\u002F27.styles-basics",{"title":1531,"path":1532,"stem":1533},"CSS-like стилі Avalonia","\u002Fcsharp\u002Fdesktop-ui\u002F27a.avalonia-css-styling","01.csharp\u002F12.desktop-ui\u002F27a.avalonia-css-styling",{"title":1535,"path":1536,"stem":1537},"Control Templates — Частина 1. Концепція та TemplateBinding","\u002Fcsharp\u002Fdesktop-ui\u002Fcontrol-templates-part1","01.csharp\u002F12.desktop-ui\u002F28.control-templates-part1",{"title":1539,"path":1540,"stem":1541},"Control Templates — Частина 2. Named Parts та ContentPresenter","\u002Fcsharp\u002Fdesktop-ui\u002Fcontrol-templates-part2","01.csharp\u002F12.desktop-ui\u002F28.control-templates-part2",{"title":1543,"path":1544,"stem":1545},"Control Themes в Avalonia — нова ера стилізації","\u002Fcsharp\u002Fdesktop-ui\u002F28a.avalonia-control-themes","01.csharp\u002F12.desktop-ui\u002F28a.avalonia-control-themes",{"title":1547,"path":1548,"stem":1549},"Triggers та Visual State Manager у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Ftriggers-visual-states","01.csharp\u002F12.desktop-ui\u002F29.triggers-visual-states",{"title":1551,"path":1552,"stem":1553},"Pseudo-classes в Avalonia — замість WPF Triggers","\u002Fcsharp\u002Fdesktop-ui\u002F29a.avalonia-pseudo-classes","01.csharp\u002F12.desktop-ui\u002F29a.avalonia-pseudo-classes",{"title":1555,"path":1556,"stem":1557},"Теми та ресурсні словники у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fresources-themes","01.csharp\u002F12.desktop-ui\u002F30.resources-themes",{"title":1559,"path":1560,"stem":1561},"Avalonia Themes — Fluent Design та система тематизації","\u002Fcsharp\u002Fdesktop-ui\u002F30a.avalonia-themes-fluent","01.csharp\u002F12.desktop-ui\u002F30a.avalonia-themes-fluent",{"title":1563,"path":1564,"stem":1565},"Контроли колекцій — глибоке занурення","\u002Fcsharp\u002Fdesktop-ui\u002Fcollection-controls","01.csharp\u002F12.desktop-ui\u002F31.collection-controls",{"title":1567,"path":1568,"stem":1569},"DataGrid — колонки та базове відображення","\u002Fcsharp\u002Fdesktop-ui\u002Fdatagrid-part1","01.csharp\u002F12.desktop-ui\u002F32.datagrid-part1",{"title":1571,"path":1572,"stem":1573},"DataGrid — сортування, фільтрація, редагування","\u002Fcsharp\u002Fdesktop-ui\u002Fdatagrid-part2","01.csharp\u002F12.desktop-ui\u002F32.datagrid-part2",{"title":1575,"path":1576,"stem":1577},"TreeView та GridView","\u002Fcsharp\u002Fdesktop-ui\u002Ftreeview-listview","01.csharp\u002F12.desktop-ui\u002F33.treeview-listview",{"title":1579,"path":1580,"stem":1581},"Меню, Toolbar, ContextMenu, StatusBar","\u002Fcsharp\u002Fdesktop-ui\u002Fmenus-toolbars","01.csharp\u002F12.desktop-ui\u002F34.menus-toolbars",{"title":1583,"path":1584,"stem":1585},"Навігація та керування вікнами. Частина 1: вікна та сторінки","\u002Fcsharp\u002Fdesktop-ui\u002Fnavigation-windows-part1","01.csharp\u002F12.desktop-ui\u002F35.navigation-windows-part1",{"title":1587,"path":1588,"stem":1589},"Навігація та керування вікнами. Частина 2: MVVM-навігація","\u002Fcsharp\u002Fdesktop-ui\u002Fnavigation-windows-part2","01.csharp\u002F12.desktop-ui\u002F35.navigation-windows-part2",{"title":1591,"path":1592,"stem":1593},"Avalonia — Навігація та діалоги","\u002Fcsharp\u002Fdesktop-ui\u002F35a.avalonia-navigation-dialogs","01.csharp\u002F12.desktop-ui\u002F35a.avalonia-navigation-dialogs",{"title":1595,"path":1596,"stem":1597},"Діалоги та File Pickers у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fdialogs-file-pickers","01.csharp\u002F12.desktop-ui\u002F36.dialogs-file-pickers",{"title":1599,"path":1600,"stem":1601},"UserControl: компонентний підхід у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fuser-controls","01.csharp\u002F12.desktop-ui\u002F37.user-controls",{"title":1603,"path":1604,"stem":1605},"Custom Controls: Lookless Controls у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fcustom-controls","01.csharp\u002F12.desktop-ui\u002F38.custom-controls",{"title":1607,"path":1608,"stem":1609},"Avalonia TemplatedControl — Lookless Controls","\u002Fcsharp\u002Fdesktop-ui\u002F38a.avalonia-templated-controls","01.csharp\u002F12.desktop-ui\u002F38a.avalonia-templated-controls",{"title":1611,"path":1612,"stem":1613},"Анімації у WPF: Storyboard та Easing Functions","\u002Fcsharp\u002Fdesktop-ui\u002Fanimations-transitions","01.csharp\u002F12.desktop-ui\u002F39.animations-transitions",{"title":1615,"path":1616,"stem":1617},"Анімації в Avalonia","\u002Fcsharp\u002Fdesktop-ui\u002F39a.avalonia-animations","01.csharp\u002F12.desktop-ui\u002F39a.avalonia-animations",{"title":1619,"path":1620,"stem":1621},"2D Графіка та Мультимедіа у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fmedia-graphics","01.csharp\u002F12.desktop-ui\u002F40.media-graphics",{"title":1623,"path":1624,"stem":1625},"Dependency Injection у WPF та Avalonia","\u002Fcsharp\u002Fdesktop-ui\u002Fdi-integration","01.csharp\u002F12.desktop-ui\u002F41.di-integration",{"title":1627,"path":1628,"stem":1629},"SQLite та EF Core у десктопних додатках","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-persistence-part1","01.csharp\u002F12.desktop-ui\u002F42.data-persistence-part1",{"title":1631,"path":1632,"stem":1633},"Repository Pattern та Unit of Work","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-persistence-part2","01.csharp\u002F12.desktop-ui\u002F43.data-persistence-part2",{"title":1635,"path":1636,"stem":1637},"Тестування ViewModels","\u002Fcsharp\u002Fdesktop-ui\u002Fviewmodel-testing","01.csharp\u002F12.desktop-ui\u002F44.viewmodel-testing",{"title":1639,"path":1640,"stem":1641},"Avalonia Headless Testing — тестування UI без вікон","\u002Fcsharp\u002Fdesktop-ui\u002F44a.avalonia-headless-testing","01.csharp\u002F12.desktop-ui\u002F44a.avalonia-headless-testing",{"title":1643,"path":1644,"stem":1645},"Кросплатформна розробка з Avalonia","\u002Fcsharp\u002Fdesktop-ui\u002Favalonia-cross-platform","01.csharp\u002F12.desktop-ui\u002F45.avalonia-cross-platform",{"title":1647,"path":1648,"stem":1649},"Пакування та розгортання Avalonia додатків","\u002Fcsharp\u002Fdesktop-ui\u002Favalonia-packaging-deployment","01.csharp\u002F12.desktop-ui\u002F46.avalonia-packaging-deployment",{"title":1651,"path":1652,"stem":1653},"Розгортання WPF застосунків","\u002Fcsharp\u002Fdesktop-ui\u002Fwpf-packaging-deployment","01.csharp\u002F12.desktop-ui\u002F47.wpf-packaging-deployment",{"title":1655,"icon":658,"path":1656,"stem":1657,"children":1658,"page":59},"Network Programming","\u002Fcsharp\u002Fnetwork-programming","01.csharp\u002F13.network-programming",[1659,1663,1667,1671,1675,1679,1683,1687,1691,1695,1699],{"title":1660,"path":1661,"stem":1662},"Основи комп'ютерних мереж","\u002Fcsharp\u002Fnetwork-programming\u002Ffoundations","01.csharp\u002F13.network-programming\u002F01.foundations",{"title":1664,"path":1665,"stem":1666},"Модель OSI та стек TCP\u002FIP","\u002Fcsharp\u002Fnetwork-programming\u002Fosi-model","01.csharp\u002F13.network-programming\u002F02.osi-model",{"title":1668,"path":1669,"stem":1670},"IP-протокол та адресація","\u002Fcsharp\u002Fnetwork-programming\u002Fip-addressing","01.csharp\u002F13.network-programming\u002F03.ip-addressing",{"title":1672,"path":1673,"stem":1674},"UDP — протокол без з'єднання","\u002Fcsharp\u002Fnetwork-programming\u002Fudp","01.csharp\u002F13.network-programming\u002F05.udp",{"title":1676,"path":1677,"stem":1678},"UDP Broadcast та Multicast","\u002Fcsharp\u002Fnetwork-programming\u002Fudp-broadcast-multicast","01.csharp\u002F13.network-programming\u002F06.udp-broadcast-multicast",{"title":1680,"path":1681,"stem":1682},"HTTP — протокол вебу","\u002Fcsharp\u002Fnetwork-programming\u002Fhttp-fundamentals","01.csharp\u002F13.network-programming\u002F07.http-fundamentals",{"title":1684,"path":1685,"stem":1686},"HttpListener — вбудований HTTP-сервер .NET","\u002Fcsharp\u002Fnetwork-programming\u002F07a.http-listener","01.csharp\u002F13.network-programming\u002F07a.http-listener",{"title":1688,"path":1689,"stem":1690},"HTTP Advanced — cookies, аутентифікація та HTTPS","\u002Fcsharp\u002Fnetwork-programming\u002Fhttp-advanced","01.csharp\u002F13.network-programming\u002F08.http-advanced",{"title":1692,"path":1693,"stem":1694},"SMTP та протоколи електронної пошти","\u002Fcsharp\u002Fnetwork-programming\u002Fsmtp","01.csharp\u002F13.network-programming\u002F09.smtp",{"title":1696,"path":1697,"stem":1698},"WebSocket — повнодуплексний протокол реального часу","\u002Fcsharp\u002Fnetwork-programming\u002Fwebsockets","01.csharp\u002F13.network-programming\u002F10.websockets",{"title":1700,"path":1701,"stem":1702},"TLS\u002FSSL — криптографічний захист мережевих з'єднань","\u002Fcsharp\u002Fnetwork-programming\u002Ftls-ssl","01.csharp\u002F13.network-programming\u002F11.tls-ssl",{"title":1704,"path":1705,"stem":1706},"C# & .NET: The Ultimate Roadmap","\u002Fcsharp\u002Froadmap","01.csharp\u002Froadmap",{"title":1708,"icon":1709,"path":1710,"stem":1711,"children":1712,"page":59},"C++","i-devicon-cplusplus","\u002Fcpp","02.cpp",[1713,1717,1721,1725,1729,1733,1737,1741,1745,1748,1752,1756,1760,1764,1768,1772,1776,1780,1784,1788,1792,1796,1800,1804,1808,1812,1816,1820,1824,1828,1832,1836,1840,1844,1848,1852,1856,1860,1864,1868,1872,1876,1880,1884,1888,1892,1896,1900,1904,1908,1912,1916,1920,1924,1928,1932,1936,1940,1944,1948,1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000,2004,2008,2012,2016,2020,2024,2028,2032,2036,2040,2044,2048,2052,2056,2060,2064,2068,2072,2076,2080,2084,2088,2092,2096,2100,2104,2108,2112],{"title":1714,"path":1715,"stem":1716},"Вступ у програмування та алгоритми","\u002Fcpp\u002Fintro-algorithms","02.cpp\u002F01.intro-algorithms",{"title":1718,"path":1719,"stem":1720},"Code Style: угоди про оформлення коду","\u002Fcpp\u002Fcode-style","02.cpp\u002F02.code-style",{"title":1722,"path":1723,"stem":1724},"Середовище розробки та перший проєкт","\u002Fcpp\u002Fide-setup","02.cpp\u002F03.ide-setup",{"title":1726,"path":1727,"stem":1728},"Вивід даних на екран","\u002Fcpp\u002Fdata-output","02.cpp\u002F04.data-output",{"title":1730,"path":1731,"stem":1732},"Типи даних, змінні та константи","\u002Fcpp\u002Fdata-types-variables","02.cpp\u002F05.data-types-variables",{"title":1734,"path":1735,"stem":1736},"Ввід даних з клавіатури","\u002Fcpp\u002Fdata-input","02.cpp\u002F06.data-input",{"title":1738,"path":1739,"stem":1740},"Оператори, перетворення типів та логічні операції","\u002Fcpp\u002Foperators-type-conversion","02.cpp\u002F07.operators-type-conversion",{"title":1742,"path":1743,"stem":1744},"Цикли","\u002Fcpp\u002Floops","02.cpp\u002F08.loops",{"title":32,"path":1746,"stem":1747},"\u002Fcpp\u002Farrays","02.cpp\u002F09.arrays",{"title":1749,"path":1750,"stem":1751},"Алгоритми сортування та аналіз складності","\u002Fcpp\u002Fsorting","02.cpp\u002F10.sorting",{"title":1753,"path":1754,"stem":1755},"Революція C++20: Ranges та Views","\u002Fcpp\u002Franges-views","02.cpp\u002F100.ranges-views",{"title":1757,"path":1758,"stem":1759},"Алгоритми пошуку","\u002Fcpp\u002Fsearching","02.cpp\u002F11.searching",{"title":1761,"path":1762,"stem":1763},"Функції: основи","\u002Fcpp\u002Ffunctions-basics","02.cpp\u002F12.functions-basics",{"title":1765,"path":1766,"stem":1767},"Функції: прототипи, область видимості та додаткові можливості","\u002Fcpp\u002Ffunctions-scope","02.cpp\u002F13.functions-scope",{"title":1769,"path":1770,"stem":1771},"Функції: перевантаження та шаблони","\u002Fcpp\u002Ffunctions-overloading-templates","02.cpp\u002F14.functions-overloading-templates",{"title":1773,"path":1774,"stem":1775},"Вказівники: основи","\u002Fcpp\u002Fpointers-basics","02.cpp\u002F15.pointers-basics",{"title":1777,"path":1778,"stem":1779},"Посилання (References)","\u002Fcpp\u002Freferences","02.cpp\u002F16.references",{"title":1781,"path":1782,"stem":1783},"Вказівники, const і масиви","\u002Fcpp\u002Fpointers-const-arrays","02.cpp\u002F17.pointers-const-arrays",{"title":1785,"path":1786,"stem":1787},"Адресна арифметика","\u002Fcpp\u002Fpointer-arithmetic","02.cpp\u002F18.pointer-arithmetic",{"title":1789,"path":1790,"stem":1791},"Динамічна пам'ять","\u002Fcpp\u002Fdynamic-memory","02.cpp\u002F19.dynamic-memory",{"title":1793,"path":1794,"stem":1795},"Вказівники типу void","\u002Fcpp\u002Fvoid-pointers","02.cpp\u002F20.void-pointers",{"title":1797,"path":1798,"stem":1799},"Вказівники на вказівники","\u002Fcpp\u002Fpointers-to-pointers","02.cpp\u002F21.pointers-to-pointers",{"title":1801,"path":1802,"stem":1803},"Оператор доступу до членів через вказівник (->)","\u002Fcpp\u002Fmember-access-operator","02.cpp\u002F22.member-access-operator",{"title":1805,"path":1806,"stem":1807},"Цикл for-each (Range-based for)","\u002Fcpp\u002Fforeach-loop","02.cpp\u002F23.foreach-loop",{"title":1809,"path":1810,"stem":1811},"Вказівники на функції","\u002Fcpp\u002Ffunction-pointers","02.cpp\u002F24.function-pointers",{"title":1813,"path":1814,"stem":1815},"Лямбда-вирази","\u002Fcpp\u002Flambdas","02.cpp\u002F25.lambdas",{"title":1817,"path":1818,"stem":1819},"Лямбда-захоплення","\u002Fcpp\u002Flambda-captures","02.cpp\u002F26.lambda-captures",{"title":1821,"path":1822,"stem":1823},"Еліпсис","\u002Fcpp\u002Fellipsis","02.cpp\u002F27.ellipsis",{"title":1825,"path":1826,"stem":1827},"Безпечні альтернативи еліпсису","\u002Fcpp\u002F27a.ellipsis","02.cpp\u002F27a.ellipsis",{"title":1829,"path":1830,"stem":1831},"Аргументи командного рядка","\u002Fcpp\u002Fcommand-line-arguments","02.cpp\u002F28.command-line-arguments",{"title":1833,"path":1834,"stem":1835},"Перерахування (enum)","\u002Fcpp\u002Fenum","02.cpp\u002F29.enum",{"title":1837,"path":1838,"stem":1839},"Класи-перерахування (enum class)","\u002Fcpp\u002Fenum-class","02.cpp\u002F30.enum-class",{"title":1841,"path":1842,"stem":1843},"Псевдоніми типів (typedef і using)","\u002Fcpp\u002Ftype-aliases","02.cpp\u002F31.type-aliases",{"title":1845,"path":1846,"stem":1847},"Системи числення та двійкова арифметика","\u002Fcpp\u002Fnumber-systems","02.cpp\u002F32.number-systems",{"title":1849,"path":1850,"stem":1851},"Структури (struct): агрегування даних","\u002Fcpp\u002Fstruct","02.cpp\u002F33.struct",{"title":1853,"path":1854,"stem":1855},"Структури у функціях","\u002Fcpp\u002Fstruct-functions","02.cpp\u002F34.struct-functions",{"title":1857,"path":1858,"stem":1859},"Масиви структур і вкладені структури","\u002Fcpp\u002Fstruct-arrays","02.cpp\u002F35.struct-arrays",{"title":1861,"path":1862,"stem":1863},"Патерни struct та межі застосування","\u002Fcpp\u002Fstruct-patterns","02.cpp\u002F36.struct-patterns",{"title":1865,"path":1866,"stem":1867},"Символи та таблиця ASCII","\u002Fcpp\u002Fascii-characters","02.cpp\u002F37.ascii-characters",{"title":1869,"path":1870,"stem":1871},"Unicode та кодування UTF","\u002Fcpp\u002Funicode-utf","02.cpp\u002F38.unicode-utf",{"title":1873,"path":1874,"stem":1875},"C-style рядки","\u002Fcpp\u002Fc-strings","02.cpp\u002F39.c-strings",{"title":1877,"path":1878,"stem":1879},"Вступ до std::string","\u002Fcpp\u002Fstd-string-intro","02.cpp\u002F40.std-string-intro",{"title":1881,"path":1882,"stem":1883},"Довжина, ємність та доступ до символів std::string","\u002Fcpp\u002Fstd-string-capacity-access","02.cpp\u002F41.std-string-capacity-access",{"title":1885,"path":1886,"stem":1887},"Модифікація std::string: присвоювання, додавання, вставка, видалення та заміна","\u002Fcpp\u002Fstd-string-modification","02.cpp\u002F42.std-string-modification",{"title":1889,"path":1890,"stem":1891},"Пошук у std::string: find, npos та практичні патерни","\u002Fcpp\u002Fstd-string-search","02.cpp\u002F43.std-string-search",{"title":1893,"path":1894,"stem":1895},"std::string_view: невласницький погляд на рядок без копіювання","\u002Fcpp\u002Fstd-string-view","02.cpp\u002F44.std-string-view",{"title":1897,"path":1898,"stem":1899},"Об'єднання (union): один блок пам'яті, кілька інтерпретацій","\u002Fcpp\u002Funion","02.cpp\u002F45.union",{"title":1901,"path":1902,"stem":1903},"Організація коду: файли, препроцесор, простори імен","\u002Fcpp\u002Fmultifile-programs","02.cpp\u002F46.multifile-programs",{"title":1905,"path":1906,"stem":1907},"Робота з файлами: C-стиль (stdio.h)","\u002Fcpp\u002Fc-style-files","02.cpp\u002F47.c-style-files",{"title":1909,"path":1910,"stem":1911},"Робота з файлами: C++-стиль (fstream)","\u002Fcpp\u002Fcpp-style-files","02.cpp\u002F48.cpp-style-files",{"title":1913,"path":1914,"stem":1915},"Введення в ООП: від процедур до об'єктів","\u002Fcpp\u002Foop-intro","02.cpp\u002F49.oop-intro",{"title":1917,"path":1918,"stem":1919},"Класи, об'єкти та методи","\u002Fcpp\u002Fclasses-objects-methods","02.cpp\u002F50.classes-objects-methods",{"title":1921,"path":1922,"stem":1923},"Специфікатори доступу та інкапсуляція","\u002Fcpp\u002Faccess-specifiers-encapsulation","02.cpp\u002F51.access-specifiers-encapsulation",{"title":1925,"path":1926,"stem":1927},"Конструктори: гарантована ініціалізація об'єктів","\u002Fcpp\u002Fconstructors","02.cpp\u002F52.constructors",{"title":1929,"path":1930,"stem":1931},"Списки ініціалізації та делегуючі конструктори","\u002Fcpp\u002Finit-lists-delegating","02.cpp\u002F53.init-lists-delegating",{"title":1933,"path":1934,"stem":1935},"Деструктори та ідіома RAII","\u002Fcpp\u002Fdestructors-raii","02.cpp\u002F54.destructors-raii",{"title":1937,"path":1938,"stem":1939},"Прихований покажчик this","\u002Fcpp\u002Fthis-pointer","02.cpp\u002F55.this-pointer",{"title":1941,"path":1942,"stem":1943},"Розподіл класу на заголовковий файл та файл реалізації","\u002Fcpp\u002Fclass-header-source","02.cpp\u002F56.class-header-source",{"title":1945,"path":1946,"stem":1947},"Класи та const","\u002Fcpp\u002Fconst-classes","02.cpp\u002F57.const-classes",{"title":1949,"path":1950,"stem":1951},"Статичні члени класу","\u002Fcpp\u002Fstatic-members","02.cpp\u002F58.static-members",{"title":1953,"path":1954,"stem":1955},"Конструктор копіювання та запобігання копіюванню","\u002Fcpp\u002Fcopy-constructor","02.cpp\u002F59.copy-constructor",{"title":1957,"path":1958,"stem":1959},"Дружні функції та класи","\u002Fcpp\u002Ffriend-functions-classes","02.cpp\u002F60.friend-functions-classes",{"title":1961,"path":1962,"stem":1963},"Анонімні об'єкти та вкладені типи","\u002Fcpp\u002Fanonymous-objects-nested-types","02.cpp\u002F61.anonymous-objects-nested-types",{"title":1965,"path":1966,"stem":1967},"Вимірювання часу виконання: RAII-таймер","\u002Fcpp\u002Ftiming-raii-timer","02.cpp\u002F62.timing-raii-timer",{"title":1969,"path":1970,"stem":1971},"Перевантаження операторів: основи та арифметика","\u002Fcpp\u002Foperator-overloading-basics","02.cpp\u002F63.operator-overloading-basics",{"title":1973,"path":1974,"stem":1975},"Перевантаження операторів: методи класу та спеціальні оператори","\u002Fcpp\u002Foperator-overloading-methods","02.cpp\u002F64.operator-overloading-methods",{"title":1977,"path":1978,"stem":1979},"Приведення типів, explicit та delete","\u002Fcpp\u002Ftypecast-explicit-delete","02.cpp\u002F65.typecast-explicit-delete",{"title":1981,"path":1982,"stem":1983},"Глибоке копіювання та оператор присвоювання","\u002Fcpp\u002Fdeep-copy-assignment","02.cpp\u002F66.deep-copy-assignment",{"title":1985,"path":1986,"stem":1987},"Зв'язки між об'єктами: композиція та агрегація","\u002Fcpp\u002Fcomposition-aggregation","02.cpp\u002F67.composition-aggregation",{"title":1989,"path":1990,"stem":1991},"Асоціація та залежність між об","\u002Fcpp\u002Fassociation-dependency","02.cpp\u002F68.association-dependency",{"title":1993,"path":1994,"stem":1995},"Контейнерні класи та `std::initializer_list`","\u002Fcpp\u002Fcontainer-classes-initializer-list","02.cpp\u002F69.container-classes-initializer-list",{"title":1997,"path":1998,"stem":1999},"Вступ до наслідування: базові поняття та відношення «is-a»","\u002Fcpp\u002Finheritance-intro","02.cpp\u002F70.inheritance-intro",{"title":2001,"path":2002,"stem":2003},"Конструктори, деструктори та порядок ініціалізації в ієрархіях","\u002Fcpp\u002Finheritance-constructors-destructors","02.cpp\u002F71.inheritance-constructors-destructors",{"title":2005,"path":2006,"stem":2007},"Специфікатор `protected` та види наслідування","\u002Fcpp\u002Finheritance-access-specifiers","02.cpp\u002F72.inheritance-access-specifiers",{"title":2009,"path":2010,"stem":2011},"Перевизначення методів та приховування імен","\u002Fcpp\u002Fmethod-overriding-hiding","02.cpp\u002F73.method-overriding-hiding",{"title":2013,"path":2014,"stem":2015},"Множинне наслідування та проблема ромба","\u002Fcpp\u002Fmultiple-inheritance-diamond","02.cpp\u002F74.multiple-inheritance-diamond",{"title":2017,"path":2018,"stem":2019},"Вказівники на базовий клас та віртуальні функції","\u002Fcpp\u002Fvirtual-functions-polymorphism","02.cpp\u002F75.virtual-functions-polymorphism",{"title":2021,"path":2022,"stem":2023},"Специфікатори override, final та віртуальні деструктори","\u002Fcpp\u002Foverride-final-virtual-destructors","02.cpp\u002F76.override-final-virtual-destructors",{"title":2025,"path":2026,"stem":2027},"Внутрішні механізми поліморфізму: vtable, vptr та зв'язування","\u002Fcpp\u002Fvirtual-table-binding","02.cpp\u002F77.virtual-table-binding",{"title":2029,"path":2030,"stem":2031},"Абстрактні класи та чисті віртуальні функції","\u002Fcpp\u002Fabstract-classes-interfaces","02.cpp\u002F78.abstract-classes-interfaces",{"title":2033,"path":2034,"stem":2035},"Зрізка об'єктів, віртуальне наслідування та поліморфний вивід","\u002Fcpp\u002Fslicing-virtual-base-io","02.cpp\u002F79.slicing-virtual-base-io",{"title":2037,"path":2038,"stem":2039},"Динамічне приведення типів (`dynamic_cast`) та RTTI","\u002Fcpp\u002Fdynamic-cast-rtti","02.cpp\u002F80.dynamic-cast-rtti",{"title":2041,"path":2042,"stem":2043},"Шаблони функцій: узагальнене програмування","\u002Fcpp\u002Ffunction-templates","02.cpp\u002F81.function-templates",{"title":2045,"path":2046,"stem":2047},"Шаблони класів та NTTP-параметри","\u002Fcpp\u002Fclass-templates-nttp","02.cpp\u002F82.class-templates-nttp",{"title":2049,"path":2050,"stem":2051},"Повна (явна) спеціалізація шаблонів","\u002Fcpp\u002Ffull-template-specialization","02.cpp\u002F83.full-template-specialization",{"title":2053,"path":2054,"stem":2055},"Часткова спеціалізація шаблонів класів","\u002Fcpp\u002Fpartial-template-specialization","02.cpp\u002F84.partial-template-specialization",{"title":2057,"path":2058,"stem":2059},"Механізм винятків: try, catch, throw та розкручування стеку","\u002Fcpp\u002Fexceptions-basics","02.cpp\u002F85.exceptions-basics",{"title":2061,"path":2062,"stem":2063},"Ієрархія std::exception та власні класи винятків","\u002Fcpp\u002Fexception-hierarchy-custom","02.cpp\u002F86.exception-hierarchy-custom",{"title":2065,"path":2066,"stem":2067},"Повторне генерування винятків та функціональний try-блок","\u002Fcpp\u002Frethrow-function-try","02.cpp\u002F87.rethrow-function-try",{"title":2069,"path":2070,"stem":2071},"Безпека винятків, noexcept та деструктори","\u002Fcpp\u002Fsafety-noexcept","02.cpp\u002F88.safety-noexcept",{"title":2073,"path":2074,"stem":2075},"Власні структури даних: стек та черга","\u002Fcpp\u002Fcustom-stack-queue","02.cpp\u002F89.custom-stack-queue",{"title":2077,"path":2078,"stem":2079},"Власні структури даних: однозв'язаний список","\u002Fcpp\u002Flinked-list","02.cpp\u002F90.linked-list",{"title":2081,"path":2082,"stem":2083},"Власні структури даних: бінарне дерево пошуку","\u002Fcpp\u002Fbinary-search-tree","02.cpp\u002F91.binary-search-tree",{"title":2085,"path":2086,"stem":2087},"Власні структури даних: хеш-таблиця","\u002Fcpp\u002Fhash-table","02.cpp\u002F92.hash-table",{"title":2089,"path":2090,"stem":2091},"Готові структури даних C++: послідовні контейнери STL","\u002Fcpp\u002Fstl-sequential-containers","02.cpp\u002F93.stl-sequential-containers",{"title":2093,"path":2094,"stem":2095},"Готові структури даних C++: асоціативні контейнери та адаптери","\u002Fcpp\u002Fstl-associative-adapters","02.cpp\u002F94.stl-associative-adapters",{"title":2097,"path":2098,"stem":2099},"Готові структури даних C++: ітератори та алгоритми STL","\u002Fcpp\u002Fstl-iterators-algorithms","02.cpp\u002F95.stl-iterators-algorithms",{"title":2101,"path":2102,"stem":2103},"R-value посилання та move-семантика","\u002Fcpp\u002Frvalue-references-move-semantics","02.cpp\u002F96.rvalue-references-move-semantics",{"title":2105,"path":2106,"stem":2107},"Move-конструктор, move-присвоювання та Правило п","\u002Fcpp\u002Fmove-constructors-rule-of-five","02.cpp\u002F97.move-constructors-rule-of-five",{"title":2109,"path":2110,"stem":2111},"Розумний покажчик std::unique_ptr","\u002Fcpp\u002Funique-ptr","02.cpp\u002F98.unique-ptr",{"title":2113,"path":2114,"stem":2115},"Спільне володіння: std::shared_ptr та std::weak_ptr","\u002Fcpp\u002Fshared-ptr-weak-ptr","02.cpp\u002F99.shared-ptr-weak-ptr",{"title":2117,"icon":2118,"path":2119,"stem":2120,"children":2121,"page":59},"JavaScript","i-devicon-javascript","\u002Fjavascript","03.javascript",[2122,2148,2202,2224,2528,2566,2584],{"title":2123,"icon":2124,"path":2125,"stem":2126,"children":2127,"page":59},"Events","i-lucide-mouse-pointer-click","\u002Fjavascript\u002Fevents","03.javascript\u002F01.events",[2128,2132,2136,2140,2144],{"title":2129,"path":2130,"stem":2131},"Вступ до подій браузера","\u002Fjavascript\u002Fevents\u002Fintro","03.javascript\u002F01.events\u002F01.intro",{"title":2133,"path":2134,"stem":2135},"Бульбашковий механізм (Bubbling) та занурення (Capturing)","\u002Fjavascript\u002Fevents\u002Fbubbling-capturing","03.javascript\u002F01.events\u002F02.bubbling-capturing",{"title":2137,"path":2138,"stem":2139},"Делегування подій (Event Delegation)","\u002Fjavascript\u002Fevents\u002Fdelegate-events","03.javascript\u002F01.events\u002F03.delegate-events",{"title":2141,"path":2142,"stem":2143},"Типові дії браузера та preventDefault()","\u002Fjavascript\u002Fevents\u002Fprevent-default","03.javascript\u002F01.events\u002F04.prevent-default",{"title":2145,"path":2146,"stem":2147},"Запуск користувацьких подій (Custom Events)","\u002Fjavascript\u002Fevents\u002Fcustom-events","03.javascript\u002F01.events\u002F05.custom-events",{"title":2149,"icon":2150,"path":2151,"stem":2152,"children":2153,"page":59},"Network","i-lucide-globe","\u002Fjavascript\u002Fnetwork","03.javascript\u002F02.network",[2154,2158,2162,2166,2170,2174,2178,2182,2186,2190,2194,2198],{"title":2155,"path":2156,"stem":2157},"Fetch API - Сучасний підхід до HTTP-запитів","\u002Fjavascript\u002Fnetwork\u002F01-fetch-api","03.javascript\u002F02.network\u002F01-fetch-api",{"title":2159,"path":2160,"stem":2161},"FormData - Робота з формами та файлами","\u002Fjavascript\u002Fnetwork\u002F02-formdata","03.javascript\u002F02.network\u002F02-formdata",{"title":2163,"path":2164,"stem":2165},"Відстеження прогресу завантаження","\u002Fjavascript\u002Fnetwork\u002F03-download-progress","03.javascript\u002F02.network\u002F03-download-progress",{"title":2167,"path":2168,"stem":2169},"Переривання fetch-запитів","\u002Fjavascript\u002Fnetwork\u002F04-abort-requests","03.javascript\u002F02.network\u002F04-abort-requests",{"title":2171,"path":2172,"stem":2173},"CORS - Запити між різними джерелами","\u002Fjavascript\u002Fnetwork\u002F05-cors","03.javascript\u002F02.network\u002F05-cors",{"title":2175,"path":2176,"stem":2177},"Fetch API - Повний довідник опцій","\u002Fjavascript\u002Fnetwork\u002F06-fetch-options","03.javascript\u002F02.network\u002F06-fetch-options",{"title":2179,"path":2180,"stem":2181},"URL Objects - Робота з посиланнями","\u002Fjavascript\u002Fnetwork\u002F07-url-objects","03.javascript\u002F02.network\u002F07-url-objects",{"title":2183,"path":2184,"stem":2185},"XMLHttpRequest - AJAX та низькорівневі запити","\u002Fjavascript\u002Fnetwork\u002F08-xmlhttprequest","03.javascript\u002F02.network\u002F08-xmlhttprequest",{"title":2187,"path":2188,"stem":2189},"Відновлюване завантаження файлів","\u002Fjavascript\u002Fnetwork\u002F09-resumable-upload","03.javascript\u002F02.network\u002F09-resumable-upload",{"title":2191,"path":2192,"stem":2193},"Cookies, document.cookie та світ після \"Cookiepocalypse\"","\u002Fjavascript\u002Fnetwork\u002F10-cookies","03.javascript\u002F02.network\u002F10-cookies",{"title":2195,"path":2196,"stem":2197},"js-cookie: Керування Cookies без Болю","\u002Fjavascript\u002Fnetwork\u002F11-js-cookie","03.javascript\u002F02.network\u002F11-js-cookie",{"title":2199,"path":2200,"stem":2201},"Axios: Потужний HTTP-клієнт для JavaScript","\u002Fjavascript\u002Fnetwork\u002F12-axios","03.javascript\u002F02.network\u002F12-axios",{"title":2203,"icon":2204,"path":2205,"stem":2206,"children":2207,"page":59},"Bom","i-lucide-monitor","\u002Fjavascript\u002Fbom","03.javascript\u002F03.bom",[2208,2212,2216,2220],{"title":2209,"path":2210,"stem":2211},"LocalStorage, SessionStorage та patterns збереження даних","\u002Fjavascript\u002Fbom\u002F01-localstorage","03.javascript\u002F03.bom\u002F01-localstorage",{"title":2213,"path":2214,"stem":2215},"Location Object - Керування адресою сторінки","\u002Fjavascript\u002Fbom\u002F02-location-object","03.javascript\u002F03.bom\u002F02-location-object",{"title":2217,"path":2218,"stem":2219},"History API - Керування історією браузера","\u002Fjavascript\u002Fbom\u002F03-history-api","03.javascript\u002F03.bom\u002F03-history-api",{"title":2221,"path":2222,"stem":2223},"Navigator Object - Ідентифікація та Можливості Пристрою","\u002Fjavascript\u002Fbom\u002F04-navigator-object","03.javascript\u002F03.bom\u002F04-navigator-object",{"title":2225,"icon":2226,"path":2227,"stem":2228,"children":2229},"React","i-devicon-react","\u002Fjavascript\u002Freact","03.javascript\u002F04.react\u002Findex",[2230,2231,2235,2239,2243,2247,2310,2345,2497],{"title":2225,"path":2227,"stem":2228},{"title":2232,"path":2233,"stem":2234},"Робота з Формами в React","\u002Fjavascript\u002Freact\u002Freact-forms","03.javascript\u002F04.react\u002F01.react-forms",{"title":2236,"path":2237,"stem":2238},"React Hook Form: Професійна Робота з Формами","\u002Fjavascript\u002Freact\u002Freact-hook-form","03.javascript\u002F04.react\u002F02.react-hook-form",{"title":2240,"path":2241,"stem":2242},"React Hook Form: Глибоке Розуміння Архітектури та Оптимізації","\u002Fjavascript\u002Freact\u002Freact-hook-form-new","03.javascript\u002F04.react\u002F02.react-hook-form-new",{"title":2244,"path":2245,"stem":2246},"Axios та React: Професійна Архітектура Запитів","\u002Fjavascript\u002Freact\u002Fdata-fetching-axios","03.javascript\u002F04.react\u002F03.data-fetching-axios",{"title":2248,"icon":132,"path":2249,"stem":2250,"children":2251},"Tanstack Query","\u002Fjavascript\u002Freact\u002Ftanstack-query","03.javascript\u002F04.react\u002F04.tanstack-query\u002Findex",[2252,2254,2258,2262,2266,2270,2274,2278,2282,2286,2290,2294,2298,2302,2306],{"title":2253,"path":2249,"stem":2250},"TanStack Query: Майстерність Керування Станом Сервера",{"title":2255,"path":2256,"stem":2257},"Парадигма Server State: Чому useEffect недостатньо","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fserver-state-paradigm","03.javascript\u002F04.react\u002F04.tanstack-query\u002F01.server-state-paradigm",{"title":2259,"path":2260,"stem":2261},"Встановлення та Налаштування: Фундамент","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Finstallation-and-devtools","03.javascript\u002F04.react\u002F04.tanstack-query\u002F02.installation-and-devtools",{"title":2263,"path":2264,"stem":2265},"Основи Запитів та Магія Ключів","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fquery-basics-and-keys","03.javascript\u002F04.react\u002F04.tanstack-query\u002F03.query-basics-and-keys",{"title":2267,"path":2268,"stem":2269},"Синхронізація Даних: Життєвий Цикл Запиту","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fdata-synchronization","03.javascript\u002F04.react\u002F04.tanstack-query\u002F04.data-synchronization",{"title":2271,"path":2272,"stem":2273},"Мутації та Інвалідація: Зміна Даних","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fmutations-and-invalidation","03.javascript\u002F04.react\u002F04.tanstack-query\u002F05.mutations-and-invalidation",{"title":2275,"path":2276,"stem":2277},"Оптимістичні Оновлення: Швидше за Світло","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Foptimistic-updates","03.javascript\u002F04.react\u002F04.tanstack-query\u002F06.optimistic-updates",{"title":2279,"path":2280,"stem":2281},"Пагінація та Infinite Scroll","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fpagination-and-load-more","03.javascript\u002F04.react\u002F04.tanstack-query\u002F07.pagination-and-load-more",{"title":2283,"path":2284,"stem":2285},"Просунуті Патерни та Оптимізація","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fadvanced-patterns","03.javascript\u002F04.react\u002F04.tanstack-query\u002F08.advanced-patterns",{"title":2287,"path":2288,"stem":2289},"Архітектура та Best Practices","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Farchitecture-and-best-practices","03.javascript\u002F04.react\u002F04.tanstack-query\u002F09.architecture-and-best-practices",{"title":2291,"path":2292,"stem":2293},"Server-Side Rendering (SSR) та Гідратація","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fserver-side-rendering","03.javascript\u002F04.react\u002F04.tanstack-query\u002F10.server-side-rendering",{"title":2295,"path":2296,"stem":2297},"Стратегії Тестування","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Ftesting-strategies","03.javascript\u002F04.react\u002F04.tanstack-query\u002F11.testing-strategies",{"title":2299,"path":2300,"stem":2301},"Аутентифікація та Обробка Помилок","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fauthentication-and-errors","03.javascript\u002F04.react\u002F04.tanstack-query\u002F12.authentication-and-errors",{"title":2303,"path":2304,"stem":2305},"React Suspense та Майбутнє","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Freact-suspense","03.javascript\u002F04.react\u002F04.tanstack-query\u002F13.react-suspense",{"title":2307,"path":2308,"stem":2309},"Глибоке Занурення в Продуктивність","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fperformance-deep-dive","03.javascript\u002F04.react\u002F04.tanstack-query\u002F14.performance-deep-dive",{"title":2311,"icon":2226,"path":2312,"stem":2313,"children":2314},"React Router","\u002Fjavascript\u002Freact\u002Freact-router","03.javascript\u002F04.react\u002F05.react-router\u002Findex",[2315,2317,2321,2325,2329,2333,2337,2341],{"title":2316,"path":2312,"stem":2313},"React Router: Навігаційна система сучасного вебу",{"title":2318,"path":2319,"stem":2320},"Налаштування та Базовий Роутинг","\u002Fjavascript\u002Freact\u002Freact-router\u002Fsetup-and-basic-routing","03.javascript\u002F04.react\u002F05.react-router\u002F01.setup-and-basic-routing",{"title":2322,"path":2323,"stem":2324},"Динамічна Навігація","\u002Fjavascript\u002Freact\u002Freact-router\u002Fnavigation-and-links","03.javascript\u002F04.react\u002F05.react-router\u002F02.navigation-and-links",{"title":2326,"path":2327,"stem":2328},"Вкладені Маршрути та Макети","\u002Fjavascript\u002Freact\u002Freact-router\u002Fnested-routes-and-layouts","03.javascript\u002F04.react\u002F05.react-router\u002F03.nested-routes-and-layouts",{"title":2330,"path":2331,"stem":2332},"Динамічні Маршрути та Параметри","\u002Fjavascript\u002Freact\u002Freact-router\u002Fdynamic-routing","03.javascript\u002F04.react\u002F05.react-router\u002F04.dynamic-routing",{"title":2334,"path":2335,"stem":2336},"Data APIs: Loaders та Actions","\u002Fjavascript\u002Freact\u002Freact-router\u002Fdata-loading","03.javascript\u002F04.react\u002F05.react-router\u002F05.data-loading",{"title":2338,"path":2339,"stem":2340},"Просунуті Патерни","\u002Fjavascript\u002Freact\u002Freact-router\u002Fadvanced-patterns","03.javascript\u002F04.react\u002F05.react-router\u002F06.advanced-patterns",{"title":2342,"path":2343,"stem":2344},"Legacy Routing: Компонентний підхід","\u002Fjavascript\u002Freact\u002Freact-router\u002Flegacy-routing","03.javascript\u002F04.react\u002F05.react-router\u002F07.legacy-routing",{"title":2346,"icon":132,"path":2347,"stem":2348,"children":2349},"Redux","\u002Fjavascript\u002Freact\u002Fredux","03.javascript\u002F04.react\u002F06.redux\u002Findex",[2350,2352,2368,2397,2406,2427,2443,2472],{"title":2351,"path":2347,"stem":2348},"Redux: Еволюція управління станом",{"title":14,"icon":15,"path":2353,"stem":2354,"children":2355,"page":59},"\u002Fjavascript\u002Freact\u002Fredux\u002Ffundamentals","03.javascript\u002F04.react\u002F06.redux\u002F01.fundamentals",[2356,2360,2364],{"title":2357,"path":2358,"stem":2359},"Вступ до State Management","\u002Fjavascript\u002Freact\u002Fredux\u002Ffundamentals\u002Fintro-state-management","03.javascript\u002F04.react\u002F06.redux\u002F01.fundamentals\u002F01.intro-state-management",{"title":2361,"path":2362,"stem":2363},"Філософія Redux та Три Принципи","\u002Fjavascript\u002Freact\u002Fredux\u002Ffundamentals\u002Fredux-philosophy","03.javascript\u002F04.react\u002F06.redux\u002F01.fundamentals\u002F02.redux-philosophy",{"title":2365,"path":2366,"stem":2367},"Чисті функції та Іммутабельність","\u002Fjavascript\u002Freact\u002Fredux\u002Ffundamentals\u002Fpure-functions-immutability","03.javascript\u002F04.react\u002F06.redux\u002F01.fundamentals\u002F03.pure-functions-immutability",{"title":2369,"icon":132,"path":2370,"stem":2371,"children":2372,"page":59},"Classic Redux","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux",[2373,2377,2381,2385,2389,2393],{"title":2374,"path":2375,"stem":2376},"Створення Store (Classic Redux)","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Fstore-setup","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F01.store-setup",{"title":2378,"path":2379,"stem":2380},"Actions, Constants та Action Creators","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Factions-constants","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F02.actions-constants",{"title":2382,"path":2383,"stem":2384},"Логіка Reducers","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Freducers","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F03.reducers",{"title":2386,"path":2387,"stem":2388},"Комбінування Reducers (Root Reducer)","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Fdata-flow","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F04.data-flow",{"title":2390,"path":2391,"stem":2392},"Підключення до React (React-Redux)","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Freact-redux-connection","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F05.react-redux-connection",{"title":2394,"path":2395,"stem":2396},"Middleware та Асинхронність (Redux Thunk)","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Fmiddleware-thunk","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F06.middleware-thunk",{"title":2398,"icon":132,"path":2399,"stem":2400,"children":2401,"page":59},"Transition To Rtk","\u002Fjavascript\u002Freact\u002Fredux\u002Ftransition-to-rtk","03.javascript\u002F04.react\u002F06.redux\u002F03.transition-to-rtk",[2402],{"title":2403,"path":2404,"stem":2405},"Проблеми класичного Redux","\u002Fjavascript\u002Freact\u002Fredux\u002Ftransition-to-rtk\u002Fproblems-with-classic","03.javascript\u002F04.react\u002F06.redux\u002F03.transition-to-rtk\u002F01.problems-with-classic",{"title":2407,"icon":132,"path":2408,"stem":2409,"children":2410,"page":59},"Redux Toolkit","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit",[2411,2415,2419,2423],{"title":2412,"path":2413,"stem":2414},"Налаштування Store з configureStore","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit\u002Fconfigure-store","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit\u002F01.configure-store",{"title":2416,"path":2417,"stem":2418},"createSlice: Революція в Redux","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit\u002Fcreate-slice","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit\u002F02.create-slice",{"title":2420,"path":2421,"stem":2422},"Асинхронність з createAsyncThunk","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit\u002Fasync-thunks","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit\u002F03.async-thunks",{"title":2424,"path":2425,"stem":2426},"04. Entity Adapter: Керування нормалізованим станом","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit\u002Fentity-adapter","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit\u002F04.entity-adapter",{"title":2428,"icon":92,"path":2429,"stem":2430,"children":2431,"page":59},"Advanced","\u002Fjavascript\u002Freact\u002Fredux\u002Fadvanced","03.javascript\u002F04.react\u002F06.redux\u002F05.advanced",[2432,2436,2440],{"title":2433,"path":2434,"stem":2435},"Мемоізація та Селектори: Повний Гайд по Reselect","\u002Fjavascript\u002Freact\u002Fredux\u002Fadvanced\u002Fselectors-reselect","03.javascript\u002F04.react\u002F06.redux\u002F05.advanced\u002F01.selectors-reselect",{"title":2437,"path":2438,"stem":2439},"RTK Query: Архітектура Серверного Кешу","\u002Fjavascript\u002Freact\u002Fredux\u002Fadvanced\u002Frtk-query-intro","03.javascript\u002F04.react\u002F06.redux\u002F05.advanced\u002F02.rtk-query-intro",{"title":2287,"path":2441,"stem":2442},"\u002Fjavascript\u002Freact\u002Fredux\u002Fadvanced\u002Farchitecture-best-practices","03.javascript\u002F04.react\u002F06.redux\u002F05.advanced\u002F03.architecture-best-practices",{"title":2444,"icon":132,"path":2445,"stem":2446,"children":2447,"page":59},"Project Kanban","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban",[2448,2452,2456,2460,2464,2468],{"title":2449,"path":2450,"stem":2451},"Проєкт: Kanban Board (Trello Clone)","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Fproject-overview","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F01.project-overview",{"title":2453,"path":2454,"stem":2455},"Налаштування та Типізація","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Fsetup-and-types","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F02.setup-and-types",{"title":2457,"path":2458,"stem":2459},"Board Slice: Серце Дошки","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Fboard-slice","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F03.board-slice",{"title":2461,"path":2462,"stem":2463},"Логіка Drag & Drop","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Fdrag-and-drop-logic","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F04.drag-and-drop-logic",{"title":2465,"path":2466,"stem":2467},"Інтеграція з RTK Query","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Frtk-query-integration","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F05.rtk-query-integration",{"title":2469,"path":2470,"stem":2471},"Optimistic Updates","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Foptimistic-updates","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F06.optimistic-updates",{"title":2473,"icon":132,"path":2474,"stem":2475,"children":2476,"page":59},"Testing","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting","03.javascript\u002F04.react\u002F06.redux\u002F07.testing",[2477,2481,2485,2489,2493],{"title":2478,"path":2479,"stem":2480},"Тестування Redux","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Fintro-testing","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F01.intro-testing",{"title":2482,"path":2483,"stem":2484},"Тестування Reducers","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Ftesting-reducers","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F02.testing-reducers",{"title":2486,"path":2487,"stem":2488},"Тестування Селекторів","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Ftesting-selectors","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F03.testing-selectors",{"title":2490,"path":2491,"stem":2492},"Тестування Компонентів (Integration)","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Ftesting-components","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F04.testing-components",{"title":2494,"path":2495,"stem":2496},"Тестування Async Thunks","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Ftesting-thunks","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F05.testing-thunks",{"title":2498,"icon":132,"path":2499,"stem":2500,"children":2501},"Ui Libraries","\u002Fjavascript\u002Freact\u002Fui-libraries","03.javascript\u002F04.react\u002F07.ui-libraries\u002Findex",[2502,2504,2508,2512,2516,2520,2524],{"title":2503,"path":2499,"stem":2500},"UI Бібліотеки в React",{"title":2505,"path":2506,"stem":2507},"Вступ до UI Бібліотек: Навіщо Винаходити Велосипед Двічі?","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fintroduction-to-ui-libraries","03.javascript\u002F04.react\u002F07.ui-libraries\u002F01.introduction-to-ui-libraries",{"title":2509,"path":2510,"stem":2511},"Філософія shadcn\u002Fui: \"Not a Component Library\"","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-philosophy","03.javascript\u002F04.react\u002F07.ui-libraries\u002F02.shadcn-philosophy",{"title":2513,"path":2514,"stem":2515},"Установка та Налаштування shadcn\u002Fui","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-installation","03.javascript\u002F04.react\u002F07.ui-libraries\u002F03.shadcn-installation",{"title":2517,"path":2518,"stem":2519},"Базові Компоненти shadcn\u002Fui: Фундамент Інтерфейсу","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-components-basics","03.javascript\u002F04.react\u002F07.ui-libraries\u002F04.shadcn-components-basics",{"title":2521,"path":2522,"stem":2523},"Компоненти Форм: Побудова Інтерактивних Form","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-components-forms","03.javascript\u002F04.react\u002F07.ui-libraries\u002F05.shadcn-components-forms",{"title":2525,"path":2526,"stem":2527},"Складні Компоненти: Dialog, Dropdown, Table та Command","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-components-advanced","03.javascript\u002F04.react\u002F07.ui-libraries\u002F06.shadcn-components-advanced",{"title":2529,"icon":2530,"path":2531,"stem":2532,"children":2533,"page":59},"TypeScript","i-devicon-typescript","\u002Fjavascript\u002Ftypescript","03.javascript\u002F05.typescript",[2534,2538,2542,2546,2550,2554,2558,2562],{"title":2535,"path":2536,"stem":2537},"TypeScript: Броня для вашого коду","\u002Fjavascript\u002Ftypescript\u002Fintro-and-basic-types","03.javascript\u002F05.typescript\u002F01.intro-and-basic-types",{"title":2539,"path":2540,"stem":2541},"Майстерність Моделювання Даних: Інтерфейси та Просунуті Типи","\u002Fjavascript\u002Ftypescript\u002Finterfaces-and-advanced-types","03.javascript\u002F05.typescript\u002F02.interfaces-and-advanced-types",{"title":2543,"path":2544,"stem":2545},"Алхімія Типів: Generics та Utility Types","\u002Fjavascript\u002Ftypescript\u002Fgenerics-and-utilities","03.javascript\u002F05.typescript\u002F03.generics-and-utilities",{"title":2547,"path":2548,"stem":2549},"Архітектура та Шаблони: Класи в TypeScript","\u002Fjavascript\u002Ftypescript\u002Fclasses-and-oop","03.javascript\u002F05.typescript\u002F04.classes-and-oop",{"title":2551,"path":2552,"stem":2553},"Продакшн та Екосистема: Advanced Config & Workflow","\u002Fjavascript\u002Ftypescript\u002Fadvanced-patterns-and-config","03.javascript\u002F05.typescript\u002F05.advanced-patterns-and-config",{"title":2555,"path":2556,"stem":2557},"TypeScript у світі React","\u002Fjavascript\u002Ftypescript\u002Freact-basics","03.javascript\u002F05.typescript\u002F06.react-basics",{"title":2559,"path":2560,"stem":2561},"React + TypeScript: Продвинуті патерни","\u002Fjavascript\u002Ftypescript\u002Freact-advanced","03.javascript\u002F05.typescript\u002F07.react-advanced",{"title":2563,"path":2564,"stem":2565},"React + TypeScript: Екосистема та бібліотеки","\u002Fjavascript\u002Ftypescript\u002Freact-ecosystem","03.javascript\u002F05.typescript\u002F08.react-ecosystem",{"title":2567,"icon":2568,"path":2569,"stem":2570,"children":2571,"page":59},"Асинхронність","i-lucide-refresh-cw","\u002Fjavascript\u002Fasync-programming","03.javascript\u002F06.async-programming",[2572,2576,2580],{"title":2573,"path":2574,"stem":2575},"Event Loop: серце асинхронності в JavaScript","\u002Fjavascript\u002Fasync-programming\u002Fevent-loop-fundamentals","03.javascript\u002F06.async-programming\u002F01.event-loop-fundamentals",{"title":2577,"path":2578,"stem":2579},"Task Queue та Microtask Queue: пріоритети виконання","\u002Fjavascript\u002Fasync-programming\u002Ftask-queues","03.javascript\u002F06.async-programming\u002F02.task-queues",{"title":2581,"path":2582,"stem":2583},"Асинхронні патерни: від Callbacks до Async\u002FAwait","\u002Fjavascript\u002Fasync-programming\u002Fasync-patterns","03.javascript\u002F06.async-programming\u002F03.async-patterns",{"title":2585,"path":2586,"stem":2587},"Atomic Design","\u002Fjavascript\u002Fatomic-design","03.javascript\u002F2.atomic-design",{"title":2589,"icon":2590,"path":2591,"stem":2592,"children":2593,"page":59},"Java","i-devicon-java","\u002Fjava","04.java",[2594,2597,2600,2604,2608,2612,2616],{"title":162,"path":2595,"stem":2596},"\u002Fjava\u002Fdata-mapper-part1","04.java\u002F01.data-mapper-part1",{"title":166,"path":2598,"stem":2599},"\u002Fjava\u002Fdata-mapper-part2","04.java\u002F02.data-mapper-part2",{"title":2601,"path":2602,"stem":2603},"Service Layer: Організація бізнес-логіки","\u002Fjava\u002Fservice-layer","04.java\u002F03.service-layer",{"title":2605,"path":2606,"stem":2607},"Rich Domain Model та State Pattern","\u002Fjava\u002Frich-domain-model","04.java\u002F04.rich-domain-model",{"title":2609,"path":2610,"stem":2611},"Патерни для складної бізнес-логіки","\u002Fjava\u002Fbusiness-logic-patterns","04.java\u002F05.business-logic-patterns",{"title":2613,"path":2614,"stem":2615},"Обробка помилок та валідація","\u002Fjava\u002Ferror-handling-validation","04.java\u002F06.error-handling-validation",{"title":2617,"path":2618,"stem":2619,"children":2620,"page":59},"Проектування баз даних","\u002Fjava\u002Fpr2","04.java\u002Fpr2",[2621,2625,2629,2633,2637,2641,2645,2649,2653,2657,2661,2665,2669,2673,2677,2681,2685,2689,2693,2697,2701,2705,2709,2713,2717,2721,2725,2729,2733,2737,2741,2745,2749,2753,2757,2761,2765],{"title":2622,"path":2623,"stem":2624},"Концептуальне моделювання: Мистецтво розуміння предметної області","\u002Fjava\u002Fpr2\u002Fconceptual-modeling","04.java\u002Fpr2\u002F01.conceptual-modeling",{"title":2626,"path":2627,"stem":2628},"Логічне моделювання: Від бізнес-ідей до структур даних","\u002Fjava\u002Fpr2\u002Flogical-modeling","04.java\u002Fpr2\u002F02.logical-modeling",{"title":2630,"path":2631,"stem":2632},"Нормалізація: Гігієна даних та боротьба з аномаліями","\u002Fjava\u002Fpr2\u002Fnormalization","04.java\u002Fpr2\u002F03.normalization",{"title":2634,"path":2635,"stem":2636},"Фізична схема: Від абстракції до DDL","\u002Fjava\u002Fpr2\u002Fphysical-schema","04.java\u002Fpr2\u002F04.physical-schema",{"title":2638,"path":2639,"stem":2640},"Архітектурна класифікація таблиць","\u002Fjava\u002Fpr2\u002Ftable-classification","04.java\u002Fpr2\u002F05.table-classification",{"title":2642,"path":2643,"stem":2644},"Database Migrations: Версіонування схеми з Flyway","\u002Fjava\u002Fpr2\u002Fdatabase-migrations","04.java\u002Fpr2\u002F06.database-migrations",{"title":2646,"path":2647,"stem":2648},"А що, якби це була не реляційна БД?","\u002Fjava\u002Fpr2\u002Fbeyond-relational","04.java\u002Fpr2\u002F07.beyond-relational",{"title":2650,"path":2651,"stem":2652},"Object-Relational Impedance Mismatch: Два світи, що не хочуть дружити","\u002Fjava\u002Fpr2\u002Fimpedance-mismatch","04.java\u002Fpr2\u002F09.impedance-mismatch",{"title":2654,"path":2655,"stem":2656},"JDBC: Перший контакт із базою даних","\u002Fjava\u002Fpr2\u002Fjdbc-fundamentals","04.java\u002Fpr2\u002F10.jdbc-fundamentals",{"title":2658,"path":2659,"stem":2660},"Якість коду: Spotless, SpotBugs та SonarQube","\u002Fjava\u002Fpr2\u002F10a.code-quality","04.java\u002Fpr2\u002F10a.code-quality",{"title":2662,"path":2663,"stem":2664},"Connection Pool: Патерн Object Pool для JDBC-з'єднань","\u002Fjava\u002Fpr2\u002Fconnection-pool","04.java\u002Fpr2\u002F11.connection-pool",{"title":2666,"path":2667,"stem":2668},"Row Data Gateway: Об'єкт як обгортка рядка таблиці","\u002Fjava\u002Fpr2\u002Frow-data-gateway","04.java\u002Fpr2\u002F12.row-data-gateway",{"title":2670,"path":2671,"stem":2672},"Table Data Gateway: Фасад таблиці як архітектурний відступ","\u002Fjava\u002Fpr2\u002Ftable-data-gateway","04.java\u002Fpr2\u002F13.table-data-gateway",{"title":2674,"path":2675,"stem":2676},"Repository + Data Mapper: Правильна шарова архітектура з JDBC","\u002Fjava\u002Fpr2\u002Frepository-data-mapper","04.java\u002Fpr2\u002F14.repository-data-mapper",{"title":2678,"path":2679,"stem":2680},"Identity Map: Кешування сутностей у рамках сесії","\u002Fjava\u002Fpr2\u002Fidentity-map","04.java\u002Fpr2\u002F15.identity-map",{"title":2682,"path":2683,"stem":2684},"Unit of Work: Відстеження змін і координація JDBC-транзакцій","\u002Fjava\u002Fpr2\u002Funit-of-work","04.java\u002Fpr2\u002F16.unit-of-work",{"title":2686,"path":2687,"stem":2688},"Strategy: Замінювані SQL-стратегії для підтримки різних СУБД","\u002Fjava\u002Fpr2\u002Fstrategy-sql","04.java\u002Fpr2\u002F17.strategy-sql",{"title":2690,"path":2691,"stem":2692},"Proxy: Lazy Loading для One-To-Many колекцій","\u002Fjava\u002Fpr2\u002Fproxy-lazy-loading","04.java\u002Fpr2\u002F18.proxy-lazy-loading",{"title":2694,"path":2695,"stem":2696},"Generic Repository через Java Reflection: анотації та динамічний SQL","\u002Fjava\u002Fpr2\u002Fgeneric-repository-reflection","04.java\u002Fpr2\u002F19.generic-repository-reflection",{"title":2698,"path":2699,"stem":2700},"Specification Pattern: Композиція бізнес-правил для складних запитів","\u002Fjava\u002Fpr2\u002Fspecification-pattern","04.java\u002Fpr2\u002F20.specification-pattern",{"title":2702,"path":2703,"stem":2704},"Розширені можливості Specification Pattern: підзапити, агрегації та гібридний підхід","\u002Fjava\u002Fpr2\u002F20a.advanced-specifications","04.java\u002Fpr2\u002F20a.advanced-specifications",{"title":2706,"path":2707,"stem":2708},"Асинхронність у JDBC: Від блокуючих викликів до CompletableFuture","\u002Fjava\u002Fpr2\u002Fasynchronous-jdbc","04.java\u002Fpr2\u002F21.asynchronous-jdbc",{"title":2710,"path":2711,"stem":2712},"Інтеграційне тестування JDBC-репозиторіїв: Embedded H2 та патерн AAA","\u002Fjava\u002Fpr2\u002Fintegration-testing-h2","04.java\u002Fpr2\u002F22.integration-testing-h2",{"title":2714,"path":2715,"stem":2716},"Testcontainers: Тестування з реальною PostgreSQL у Docker-контейнерах","\u002Fjava\u002Fpr2\u002Fintegration-testing-testcontainers","04.java\u002Fpr2\u002F23.integration-testing-testcontainers",{"title":2718,"path":2719,"stem":2720},"Google Guice: Впровадження залежностей у JavaFX-проєкті","\u002Fjava\u002Fpr2\u002Fdependency-injection-guice","04.java\u002Fpr2\u002F24.dependency-injection-guice",{"title":2722,"path":2723,"stem":2724},"JavaFX: Основи побудови графічних інтерфейсів","\u002Fjava\u002Fpr2\u002Fjavafx-fundamentals","04.java\u002Fpr2\u002F25.javafx-fundamentals",{"title":2726,"path":2727,"stem":2728},"Properties та Bindings: Реактивність у JavaFX","\u002Fjava\u002Fpr2\u002Fjavafx-properties-bindings","04.java\u002Fpr2\u002F26.javafx-properties-bindings",{"title":2730,"path":2731,"stem":2732},"MVC vs MVP vs MVVM: Еволюція архітектурних патернів UI","\u002Fjava\u002Fpr2\u002Fui-architecture-patterns","04.java\u002Fpr2\u002F27.ui-architecture-patterns",{"title":2734,"path":2735,"stem":2736},"MVVM на практиці: Побудова ViewModel","\u002Fjava\u002Fpr2\u002Fmvvm-viewmodel-implementation","04.java\u002Fpr2\u002F28.mvvm-viewmodel-implementation",{"title":2738,"path":2739,"stem":2740},"View та Controller: Зв'язування з ViewModel через FXML","\u002Fjava\u002Fpr2\u002Fmvvm-view-controller","04.java\u002Fpr2\u002F29.mvvm-view-controller",{"title":2742,"path":2743,"stem":2744},"Інтеграція MVVM з Guice: Автоматична ін'єкція залежностей","\u002Fjava\u002Fpr2\u002Fmvvm-guice-integration","04.java\u002Fpr2\u002F30.mvvm-guice-integration",{"title":2746,"path":2747,"stem":2748},"Валідація та обробка помилок у MVVM","\u002Fjava\u002Fpr2\u002Fmvvm-validation-error-handling","04.java\u002Fpr2\u002F31.mvvm-validation-error-handling",{"title":2750,"path":2751,"stem":2752},"Навігація та управління екранами у JavaFX MVVM","\u002Fjava\u002Fpr2\u002Fmvvm-navigation-screen-management","04.java\u002Fpr2\u002F32.mvvm-navigation-screen-management",{"title":2754,"path":2755,"stem":2756},"Тестування JavaFX MVVM-додатків","\u002Fjava\u002Fpr2\u002Fmvvm-testing","04.java\u002Fpr2\u002F33.mvvm-testing",{"title":2758,"path":2759,"stem":2760},"Стилізація та теми у JavaFX: CSS та User Experience","\u002Fjava\u002Fpr2\u002Fjavafx-styling-themes","04.java\u002Fpr2\u002F34.javafx-styling-themes",{"title":2762,"path":2763,"stem":2764},"AtlantaFX: Сучасні теми для JavaFX додатків","\u002Fjava\u002Fpr2\u002Fatlantafx-modern-themes","04.java\u002Fpr2\u002F35.atlantafx-modern-themes",{"title":2766,"path":2767,"stem":2768},"Пакування та розповсюдження JavaFX-додатків","\u002Fjava\u002Fpr2\u002Fjar-packaging-distribution","04.java\u002Fpr2\u002F36.jar-packaging-distribution",{"title":2770,"icon":2771,"path":2772,"stem":2773,"children":2774,"page":59},"Python","i-devicon-python","\u002Fpython","05.python",[2775,2817,2876],{"title":2776,"icon":2777,"path":2778,"stem":2779,"children":2780,"page":59},"Python Core","i-lucide-code","\u002Fpython\u002Fcore","05.python\u002F01.core",[2781,2785,2789,2793,2797,2801,2805,2809,2813],{"title":2782,"path":2783,"stem":2784},"Як комп'ютер виконує програму","\u002Fpython\u002Fcore\u002Fhow-computers-run-programs","05.python\u002F01.core\u002F00.how-computers-run-programs",{"title":2786,"path":2787,"stem":2788},"Перша програма і функція print","\u002Fpython\u002Fcore\u002Ffirst-program-print","05.python\u002F01.core\u002F01.first-program-print",{"title":2790,"path":2791,"stem":2792},"Об'єкти, значення і типи","\u002Fpython\u002Fcore\u002Fobjects-values-types","05.python\u002F01.core\u002F02.objects-values-types",{"title":2794,"path":2795,"stem":2796},"Змінні — імена, посилання, ідентичність","\u002Fpython\u002Fcore\u002Fvariables-names-references","05.python\u002F01.core\u002F03.variables-names-references",{"title":2798,"path":2799,"stem":2800},"Вирази, оператори, введення і перетворення типів","\u002Fpython\u002Fcore\u002Fexpressions-input-types","05.python\u002F01.core\u002F04.expressions-input-types",{"title":2802,"path":2803,"stem":2804},"Логіка та розгалуження","\u002Fpython\u002Fcore\u002Flogic-branching","05.python\u002F01.core\u002F05.logic-branching",{"title":2806,"path":2807,"stem":2808},"Цикли та ітерація","\u002Fpython\u002Fcore\u002Floops-iteration","05.python\u002F01.core\u002F06.loops-iteration",{"title":2810,"path":2811,"stem":2812},"Налагодження (debugging)","\u002Fpython\u002Fcore\u002Fdebugging","05.python\u002F01.core\u002F07.debugging",{"title":2814,"path":2815,"stem":2816},"Рядки і текст","\u002Fpython\u002Fcore\u002Fstrings-text","05.python\u002F01.core\u002F08.strings-text",{"title":2428,"path":2818,"stem":2819,"children":2820,"page":59},"\u002Fpython\u002Fadvanced","05.python\u002F02.advanced",[2821,2825,2828,2832,2836,2840,2844,2848,2852,2856,2860,2864,2868,2872],{"title":2822,"path":2823,"stem":2824},"Модулі, Пакети та Віртуальні Середовища","\u002Fpython\u002Fadvanced\u002Fmodules-packages-venv","05.python\u002F02.advanced\u002F00.modules-packages-venv",{"title":71,"path":2826,"stem":2827},"\u002Fpython\u002Fadvanced\u002Fclasses-objects","05.python\u002F02.advanced\u002F01.classes-objects",{"title":2829,"path":2830,"stem":2831},"Інкапсуляція, Керування Доступом та Властивості","\u002Fpython\u002Fadvanced\u002Fencapsulation","05.python\u002F02.advanced\u002F02.encapsulation",{"title":2833,"path":2834,"stem":2835},"Наслідування, MRO та суперсила super()","\u002Fpython\u002Fadvanced\u002Finheritance-mro","05.python\u002F02.advanced\u002F03.inheritance-mro",{"title":2837,"path":2838,"stem":2839},"Абстракція — ABC проти Статичних Протоколів (PEP 544)","\u002Fpython\u002Fadvanced\u002Fabstraction-protocols","05.python\u002F02.advanced\u002F04.abstraction-protocols",{"title":2841,"path":2842,"stem":2843},"Магічні методи (Dunder) та Емуляція протоколів","\u002Fpython\u002Fadvanced\u002Fdunder-methods","05.python\u002F02.advanced\u002F05.dunder-methods",{"title":2845,"path":2846,"stem":2847},"Декоратори та Керування життєвим циклом методів","\u002Fpython\u002Fadvanced\u002Fdecorators-static-class","05.python\u002F02.advanced\u002F06.decorators-static-class",{"title":2849,"path":2850,"stem":2851},"Дескриптори — Магія доступу до атрибутів","\u002Fpython\u002Fadvanced\u002Fdescriptors","05.python\u002F02.advanced\u002F07.descriptors",{"title":2853,"path":2854,"stem":2855},"Метакласи — Динамічне створення класів під капотом CPython","\u002Fpython\u002Fadvanced\u002Fmetaclasses","05.python\u002F02.advanced\u002F08.metaclasses",{"title":2857,"path":2858,"stem":2859},"Dataclasses, NamedTuple та сучасні контейнери Python","\u002Fpython\u002Fadvanced\u002Fmodern-containers","05.python\u002F02.advanced\u002F09.modern-containers",{"title":2861,"path":2862,"stem":2863},"GIL та модель конкурентності CPython — фундамент перед потоками і процесами","\u002Fpython\u002Fadvanced\u002Fgil-concurrency-intro","05.python\u002F02.advanced\u002F11.gil-concurrency-intro",{"title":2865,"path":2866,"stem":2867},"Threading — конкурентність для I\u002FO-bound задач","\u002Fpython\u002Fadvanced\u002Fthreading","05.python\u002F02.advanced\u002F12.threading",{"title":2869,"path":2870,"stem":2871},"Multiprocessing — справжній паралелізм для CPU-bound задач","\u002Fpython\u002Fadvanced\u002Fmultiprocessing","05.python\u002F02.advanced\u002F13.multiprocessing",{"title":2873,"path":2874,"stem":2875},"asyncio — кооперативна конкурентність та event loop","\u002Fpython\u002Fadvanced\u002Fasyncio","05.python\u002F02.advanced\u002F14.asyncio",{"title":2877,"icon":92,"path":2878,"stem":2879,"children":2880,"page":59},"FastAPI","\u002Fpython\u002Ffastapi","05.python\u002F03.fastapi",[2881,2885,2889,2893,2897,2901,2905,2909,2913,2917,2921,2925,2929,2933],{"title":2882,"path":2883,"stem":2884},"Глибокий Typing та Pydantic v2 — від анотацій до валідації","\u002Fpython\u002Ffastapi\u002Ftyping-pydantic","05.python\u002F03.fastapi\u002F15.typing-pydantic",{"title":2886,"path":2887,"stem":2888},"WSGI, ASGI та Python Web-екосистема","\u002Fpython\u002Ffastapi\u002Fwsgi-asgi-ecosystem","05.python\u002F03.fastapi\u002F16.wsgi-asgi-ecosystem",{"title":2890,"path":2891,"stem":2892},"FastAPI: Перший додаток, Uvicorn та OpenAPI","\u002Fpython\u002Ffastapi\u002Ffastapi-intro","05.python\u002F03.fastapi\u002F17.fastapi-intro",{"title":2894,"path":2895,"stem":2896},"Маршрутизація, параметри запитів та APIRouter","\u002Fpython\u002Ffastapi\u002Ffastapi-routing-params","05.python\u002F03.fastapi\u002F18.fastapi-routing-params",{"title":2898,"path":2899,"stem":2900},"Pydantic v2 у FastAPI — схеми, валідація та серіалізація","\u002Fpython\u002Ffastapi\u002Ffastapi-pydantic-schemas","05.python\u002F03.fastapi\u002F19.fastapi-pydantic-schemas",{"title":2902,"path":2903,"stem":2904},"Dependency Injection — серце архітектури FastAPI","\u002Fpython\u002Ffastapi\u002Ffastapi-dependency-injection","05.python\u002F03.fastapi\u002F20.fastapi-dependency-injection",{"title":2906,"path":2907,"stem":2908},"Обробка помилок, Middleware та CORS у FastAPI","\u002Fpython\u002Ffastapi\u002Ffastapi-errors-middleware","05.python\u002F03.fastapi\u002F21.fastapi-errors-middleware",{"title":2910,"path":2911,"stem":2912},"SQLAlchemy 2.0 — ORM, Core та Async Engine","\u002Fpython\u002Ffastapi\u002Fsqlalchemy-orm","05.python\u002F03.fastapi\u002F22.sqlalchemy-orm",{"title":2914,"path":2915,"stem":2916},"Alembic — міграції бази даних","\u002Fpython\u002Ffastapi\u002Falembic-migrations","05.python\u002F03.fastapi\u002F23.alembic-migrations",{"title":2918,"path":2919,"stem":2920},"Repository Pattern та Clean Architecture у FastAPI","\u002Fpython\u002Ffastapi\u002Ffastapi-repository-clean-arch","05.python\u002F03.fastapi\u002F24.fastapi-repository-clean-arch",{"title":2922,"path":2923,"stem":2924},"Автентифікація та авторизація — JWT, OAuth2, RBAC","\u002Fpython\u002Ffastapi\u002Ffastapi-auth-security","05.python\u002F03.fastapi\u002F25.fastapi-auth-security",{"title":2926,"path":2927,"stem":2928},"Тестування FastAPI — pytest, httpx, fixtures","\u002Fpython\u002Ffastapi\u002Ffastapi-testing","05.python\u002F03.fastapi\u002F26.fastapi-testing",{"title":2930,"path":2931,"stem":2932},"Async на повну — Background Tasks, WebSockets, SSE та Celery","\u002Fpython\u002Ffastapi\u002Ffastapi-async-advanced","05.python\u002F03.fastapi\u002F27.fastapi-async-advanced",{"title":2934,"path":2935,"stem":2936},"Deployment — Docker, CI\u002FCD, Monitoring","\u002Fpython\u002Ffastapi\u002Ffastapi-deployment","05.python\u002F03.fastapi\u002F28.fastapi-deployment",{"title":2938,"icon":2939,"path":2940,"stem":2941,"children":2942,"page":59},"Бази даних","i-lucide-database","\u002Fdatabases","06.databases",[2943,2973,2996,3033,3062,3080,3114,3126,3135],{"title":2944,"icon":2945,"path":2946,"stem":2947,"children":2948,"page":59},"Intro","i-lucide-play","\u002Fdatabases\u002Fintro","06.databases\u002F01.intro",[2949,2953,2957,2961,2965,2969],{"title":2950,"path":2951,"stem":2952},"Введення в теорію баз даних","\u002Fdatabases\u002Fintro\u002Fintroduction-to-databases","06.databases\u002F01.intro\u002F01.introduction-to-databases",{"title":2954,"path":2955,"stem":2956},"Реляційна модель даних","\u002Fdatabases\u002Fintro\u002Frelational-model-theory","06.databases\u002F01.intro\u002F02.relational-model-theory",{"title":2958,"path":2959,"stem":2960},"ER-моделювання","\u002Fdatabases\u002Fintro\u002Fer-modeling","06.databases\u002F01.intro\u002F03.er-modeling",{"title":2962,"path":2963,"stem":2964},"Логічне проектування БД","\u002Fdatabases\u002Fintro\u002Flogical-schema","06.databases\u002F01.intro\u002F04.logical-schema",{"title":2966,"path":2967,"stem":2968},"Класифікація таблиць","\u002Fdatabases\u002Fintro\u002Ftable-classification","06.databases\u002F01.intro\u002F05.table-classification",{"title":2970,"path":2971,"stem":2972},"PlantUML для баз даних","\u002Fdatabases\u002Fintro\u002Fplantuml-diagrams","06.databases\u002F01.intro\u002F06.plantuml-diagrams",{"title":2974,"icon":2939,"path":2975,"stem":2976,"children":2977,"page":59},"MS SQL Server Start","\u002Fdatabases\u002Fms-sql-server-start","06.databases\u002F02.ms-sql-server-start",[2978,2982,2988,2992],{"title":2979,"path":2980,"stem":2981},"Типи даних у MS SQL Server","\u002Fdatabases\u002Fms-sql-server-start\u002Fdata-types","06.databases\u002F02.ms-sql-server-start\u002F01.data-types",{"title":2983,"path":2984,"stem":2985,"children":2986},"Індекси у MS SQL Server","\u002Fdatabases\u002Fms-sql-server-start\u002Fsql-indexes","06.databases\u002F02.ms-sql-server-start\u002F02.sql-indexes",[2987],{"title":2983,"path":2984,"stem":2985},{"title":2989,"path":2990,"stem":2991},"Системні бази даних MS SQL Server","\u002Fdatabases\u002Fms-sql-server-start\u002Fsystem-databases","06.databases\u002F02.ms-sql-server-start\u002F03.system-databases",{"title":2993,"path":2994,"stem":2995},"Огляд мови SQL та запитів","\u002Fdatabases\u002Fms-sql-server-start\u002Fsql-queries-overview","06.databases\u002F02.ms-sql-server-start\u002F04.sql-queries-overview",{"title":2997,"icon":2939,"path":2998,"stem":2999,"children":3000,"page":59},"SQL","\u002Fdatabases\u002Fsql","06.databases\u002F03.sql",[3001,3005,3009,3013,3017,3021,3025,3029],{"title":3002,"path":3003,"stem":3004},"Налаштування демонстраційної бази даних","\u002Fdatabases\u002Fsql\u002Fsample-database-setup","06.databases\u002F03.sql\u002F00.sample-database-setup",{"title":3006,"path":3007,"stem":3008},"DDL - Створення таблиць (CREATE TABLE)","\u002Fdatabases\u002Fsql\u002Fddl-create-table","06.databases\u002F03.sql\u002F01.ddl-create-table",{"title":3010,"path":3011,"stem":3012},"DDL - Зміна та видалення таблиць (ALTER, DROP)","\u002Fdatabases\u002Fsql\u002Fddl-alter-drop-table","06.databases\u002F03.sql\u002F02.ddl-alter-drop-table",{"title":3014,"path":3015,"stem":3016},"SELECT запити - Основи","\u002Fdatabases\u002Fsql\u002Fselect-queries-fundamentals","06.databases\u002F03.sql\u002F03.select-queries-fundamentals",{"title":3018,"path":3019,"stem":3020},"SELECT запити - Розширені можливості","\u002Fdatabases\u002Fsql\u002Fselect-queries-advanced","06.databases\u002F03.sql\u002F04.select-queries-advanced",{"title":3022,"path":3023,"stem":3024},"INSERT запити - Додавання даних","\u002Fdatabases\u002Fsql\u002Finsert-queries","06.databases\u002F03.sql\u002F05.insert-queries",{"title":3026,"path":3027,"stem":3028},"UPDATE та DELETE запити","\u002Fdatabases\u002Fsql\u002Fupdate-delete-queries","06.databases\u002F03.sql\u002F06.update-delete-queries",{"title":3030,"path":3031,"stem":3032},"Транзакції в SQL","\u002Fdatabases\u002Fsql\u002Ftransactions","06.databases\u002F03.sql\u002F07.transactions",{"title":3034,"icon":2939,"path":3035,"stem":3036,"children":3037,"page":59},"Multi Table Databases","\u002Fdatabases\u002Fmulti-table-databases","06.databases\u002F04.multi-table-databases",[3038,3042,3046,3050,3054,3058],{"title":3039,"path":3040,"stem":3041},"Зв'язки та нормалізація БД","\u002Fdatabases\u002Fmulti-table-databases\u002Frelationships-and-normalization","06.databases\u002F04.multi-table-databases\u002F00.relationships-and-normalization",{"title":3043,"path":3044,"stem":3045},"INNER JOIN - З'єднання таблиць","\u002Fdatabases\u002Fmulti-table-databases\u002Finner-join","06.databases\u002F04.multi-table-databases\u002F01.inner-join",{"title":3047,"path":3048,"stem":3049},"OUTER JOINs - LEFT, RIGHT, FULL","\u002Fdatabases\u002Fmulti-table-databases\u002Fouter-joins","06.databases\u002F04.multi-table-databases\u002F02.outer-joins",{"title":3051,"path":3052,"stem":3053},"CROSS та SELF JOINs","\u002Fdatabases\u002Fmulti-table-databases\u002Fcross-self-joins","06.databases\u002F04.multi-table-databases\u002F03.cross-self-joins",{"title":3055,"path":3056,"stem":3057},"Підзапити (Subqueries)","\u002Fdatabases\u002Fmulti-table-databases\u002Fsubqueries","06.databases\u002F04.multi-table-databases\u002F04.subqueries",{"title":3059,"path":3060,"stem":3061},"Агрегації з JOIN","\u002Fdatabases\u002Fmulti-table-databases\u002Faggregations-with-joins","06.databases\u002F04.multi-table-databases\u002F05.aggregations-with-joins",{"title":3063,"icon":3064,"path":3065,"stem":3066,"children":3067,"page":59},"Aggregate Functions","i-lucide-calculator","\u002Fdatabases\u002Faggregate-functions","06.databases\u002F05.aggregate-functions",[3068,3072,3076],{"title":3069,"path":3070,"stem":3071},"Функції агрегування в MS SQL Server","\u002Fdatabases\u002Faggregate-functions\u002Fintroduction-aggregate-functions","06.databases\u002F05.aggregate-functions\u002F01.introduction-aggregate-functions",{"title":3073,"path":3074,"stem":3075},"Групування даних в MS SQL Server","\u002Fdatabases\u002Faggregate-functions\u002Fgrouping-data","06.databases\u002F05.aggregate-functions\u002F02.grouping-data",{"title":3077,"path":3078,"stem":3079},"Підзапити з агрегатними функціями","\u002Fdatabases\u002Faggregate-functions\u002Fsubqueries-aggregates","06.databases\u002F05.aggregate-functions\u002F03.subqueries-aggregates",{"title":3081,"icon":3082,"path":3083,"stem":3084,"children":3085,"page":59},"Тригери та зберігаємі процедури","i-lucide-database-zap","\u002Fdatabases\u002Ftriggers-stored-procedures","06.databases\u002F07.triggers-stored-procedures",[3086,3090,3094,3098,3102,3106,3110],{"title":3087,"path":3088,"stem":3089},"DML-тригери","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fdml-triggers","06.databases\u002F07.triggers-stored-procedures\u002F01.dml-triggers",{"title":3091,"path":3092,"stem":3093},"DDL-тригери","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fddl-triggers","06.databases\u002F07.triggers-stored-procedures\u002F02.ddl-triggers",{"title":3095,"path":3096,"stem":3097},"Transact-SQL розширення","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Ftransact-sql-extensions","06.databases\u002F07.triggers-stored-procedures\u002F03.transact-sql-extensions",{"title":3099,"path":3100,"stem":3101},"Транзакції","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Ftransactions","06.databases\u002F07.triggers-stored-procedures\u002F04.transactions",{"title":3103,"path":3104,"stem":3105},"Зберігаємі процедури","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fstored-procedures","06.databases\u002F07.triggers-stored-procedures\u002F05.stored-procedures",{"title":3107,"path":3108,"stem":3109},"Користувацькі функції","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fuser-defined-functions","06.databases\u002F07.triggers-stored-procedures\u002F06.user-defined-functions",{"title":3111,"path":3112,"stem":3113},"Безпека баз даних","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fsecurity","06.databases\u002F07.triggers-stored-procedures\u002F08.security",{"title":3111,"icon":793,"path":3115,"stem":3116,"children":3117,"page":59},"\u002Fdatabases\u002Fsecurity","06.databases\u002F08.security",[3118,3122],{"title":3119,"path":3120,"stem":3121},"Вступ до безпеки баз даних","\u002Fdatabases\u002Fsecurity\u002Fintroduction","06.databases\u002F08.security\u002F01.introduction",{"title":3123,"path":3124,"stem":3125},"Системні представлення та метадані","\u002Fdatabases\u002Fsecurity\u002Fsystem-views","06.databases\u002F08.security\u002F02.system-views",{"title":3127,"icon":3128,"path":3129,"stem":3130,"children":3131,"page":59},"Резервне копіювання та відновлення","i-lucide-database-backup","\u002Fdatabases\u002Fbackup-recovery","06.databases\u002F09.backup-recovery",[3132],{"title":3127,"path":3133,"stem":3134},"\u002Fdatabases\u002Fbackup-recovery\u002Fbackup-restore","06.databases\u002F09.backup-recovery\u002F01.backup-restore",{"title":3136,"icon":3137,"path":3138,"stem":3139,"children":3140,"page":59},"Повнотекстовий пошук","i-lucide-search","\u002Fdatabases\u002Ffull-text-search","06.databases\u002F10.full-text-search",[3141],{"title":3136,"path":3142,"stem":3143},"\u002Fdatabases\u002Ffull-text-search\u002Ffull-text-search","06.databases\u002F10.full-text-search\u002F01.full-text-search",{"title":3145,"icon":3146,"path":3147,"stem":3148,"children":3149,"page":59},"Tools","i-lucide-wrench","\u002Ftools","07.tools",[3150,3226],{"title":3151,"icon":3152,"path":3153,"stem":3154,"children":3155},"Docker","i-simple-icons-docker","\u002Ftools\u002Fdocker","07.tools\u002F01.docker\u002Findex",[3156,3158,3162,3166,3170,3174,3178,3182,3186,3190,3194,3198,3202,3206,3210,3214,3218,3222],{"title":3157,"path":3153,"stem":3154},"Docker: від нуля до production",{"title":3159,"path":3160,"stem":3161},"Контейнеризація — від проблеми до рішення","\u002Ftools\u002Fdocker\u002Fcontainerization-concept","07.tools\u002F01.docker\u002F01.containerization-concept",{"title":3163,"path":3164,"stem":3165},"Docker — що це і навіщо?","\u002Ftools\u002Fdocker\u002Fdocker-what-and-why","07.tools\u002F01.docker\u002F02.docker-what-and-why",{"title":3167,"path":3168,"stem":3169},"Архітектура Docker Engine","\u002Ftools\u002Fdocker\u002Fdocker-architecture","07.tools\u002F01.docker\u002F03.docker-architecture",{"title":3171,"path":3172,"stem":3173},"Встановлення Docker","\u002Ftools\u002Fdocker\u002Finstallation","07.tools\u002F01.docker\u002F04.installation",{"title":3175,"path":3176,"stem":3177},"Перший контейнер — docker run","\u002Ftools\u002Fdocker\u002Ffirst-container","07.tools\u002F01.docker\u002F05.first-container",{"title":3179,"path":3180,"stem":3181},"Життєвий цикл контейнера","\u002Ftools\u002Fdocker\u002Fcontainer-lifecycle","07.tools\u002F01.docker\u002F06.container-lifecycle",{"title":3183,"path":3184,"stem":3185},"Docker Images — фундаментальні концепції","\u002Ftools\u002Fdocker\u002Fdocker-images-fundamentals","07.tools\u002F01.docker\u002F07.docker-images-fundamentals",{"title":3187,"path":3188,"stem":3189},"Dockerfile — основи","\u002Ftools\u002Fdocker\u002Fdockerfile-basics","07.tools\u002F01.docker\u002F08.dockerfile-basics",{"title":3191,"path":3192,"stem":3193},"Dockerfile — просунуті техніки","\u002Ftools\u002Fdocker\u002Fdockerfile-advanced","07.tools\u002F01.docker\u002F09.dockerfile-advanced",{"title":3195,"path":3196,"stem":3197},"Build Context та кешування шарів","\u002Ftools\u002Fdocker\u002Fbuild-context-and-cache","07.tools\u002F01.docker\u002F10.build-context-and-cache",{"title":3199,"path":3200,"stem":3201},"Реєстри Docker-образів","\u002Ftools\u002Fdocker\u002Fimage-registries","07.tools\u002F01.docker\u002F11.image-registries",{"title":3203,"path":3204,"stem":3205},"Контейнеризація .NET додатків","\u002Ftools\u002Fdocker\u002Fdotnet-containerization","07.tools\u002F01.docker\u002F12.dotnet-containerization",{"title":3207,"path":3208,"stem":3209},"Томи та збереження даних","\u002Ftools\u002Fdocker\u002Fvolumes-and-data","07.tools\u002F01.docker\u002F13.volumes-and-data",{"title":3211,"path":3212,"stem":3213},"Основи мережі в Docker","\u002Ftools\u002Fdocker\u002Fnetworking-basics","07.tools\u002F01.docker\u002F14.networking-basics",{"title":3215,"path":3216,"stem":3217},"Змінні оточення та конфігурація","\u002Ftools\u002Fdocker\u002Fenvironment-and-configuration","07.tools\u002F01.docker\u002F15.environment-and-configuration",{"title":3219,"path":3220,"stem":3221},"Docker Compose — оркестрація контейнерів","\u002Ftools\u002Fdocker\u002Fdocker-compose-basics","07.tools\u002F01.docker\u002F16.docker-compose-basics",{"title":3223,"path":3224,"stem":3225},"Docker Compose — Multi-Service застосунки","\u002Ftools\u002Fdocker\u002Fcompose-multi-service","07.tools\u002F01.docker\u002F17.compose-multi-service",{"title":3227,"icon":3228,"path":3229,"stem":3230,"children":3231},"Kubernetes","simple-icons:kubernetes","\u002Ftools\u002Fkubernetes","07.tools\u002F02.kubernetes\u002Findex",[3232,3234,3238,3242,3246,3250,3254,3258,3262],{"title":3233,"path":3229,"stem":3230},"Kubernetes: від розробки до production",{"title":3235,"path":3236,"stem":3237},"Kubernetes — коли Docker Compose більше не вистачає","\u002Ftools\u002Fkubernetes\u002Fwhy-kubernetes","07.tools\u002F02.kubernetes\u002F01.why-kubernetes",{"title":3239,"path":3240,"stem":3241},"Архітектура Kubernetes — анатомія кластера","\u002Ftools\u002Fkubernetes\u002Fkubernetes-architecture","07.tools\u002F02.kubernetes\u002F02.kubernetes-architecture",{"title":3243,"path":3244,"stem":3245},"Локальне середовище — minikube, kind та k3s","\u002Ftools\u002Fkubernetes\u002Flocal-environment","07.tools\u002F02.kubernetes\u002F03.local-environment",{"title":3247,"path":3248,"stem":3249},"Pod — атомарна одиниця Kubernetes","\u002Ftools\u002Fkubernetes\u002Fpods-and-containers","07.tools\u002F02.kubernetes\u002F04.pods-and-containers",{"title":3251,"path":3252,"stem":3253},"Патерни використання Pod","\u002Ftools\u002Fkubernetes\u002Fpod-patterns","07.tools\u002F02.kubernetes\u002F05.pod-patterns",{"title":3255,"path":3256,"stem":3257},"Deployment — декларативне управління Pod","\u002Ftools\u002Fkubernetes\u002Fdeployment-basics","07.tools\u002F02.kubernetes\u002F06.deployment-basics",{"title":3259,"path":3260,"stem":3261},"Rolling Updates та управління життєвим циклом Deployment","\u002Ftools\u002Fkubernetes\u002Fdeployment-rolling-updates","07.tools\u002F02.kubernetes\u002F07.deployment-rolling-updates",{"title":3263,"path":3264,"stem":3265},"Service — мережева абстракція для Pod","\u002Ftools\u002Fkubernetes\u002Fservices-networking","07.tools\u002F02.kubernetes\u002F08.services-networking",{"title":3267,"icon":3268,"path":3269,"stem":3270,"children":3271,"page":59},"Software Engineering","i-lucide-code-2","\u002Fsoftware-engineering","09.software-engineering",[3272,3276,3280,3284,3288,3292,3296,3300,3304,3308,3312],{"title":3273,"path":3274,"stem":3275},"1. Аналіз предметної області. Експертні знання та складність","\u002Fsoftware-engineering\u002Fintro-subdomains","09.software-engineering\u002F01.intro-subdomains",{"title":3277,"path":3278,"stem":3279},"2. Обмежені контексти. Інтеграція обмежених контекстів","\u002Fsoftware-engineering\u002Fintegrating-limited-contexts","09.software-engineering\u002F02.integrating-limited-contexts",{"title":3281,"path":3282,"stem":3283},"3. Реалізація простої бізнес-логіки","\u002Fsoftware-engineering\u002Fsimple","09.software-engineering\u002F03.simple",{"title":3285,"path":3286,"stem":3287},"4. Опрацювання складної бізнес-логіки","\u002Fsoftware-engineering\u002Fcomplex-business-logic","09.software-engineering\u002F04.complex-business-logic",{"title":3289,"path":3290,"stem":3291},"5. Моделювання фактора часу. Подієво-орієнтована архітектура.","\u002Fsoftware-engineering\u002Fmodelling-the-time-factor","09.software-engineering\u002F05.modelling-the-time-factor",{"title":3293,"path":3294,"stem":3295},"6. Архітектурні патерни","\u002Fsoftware-engineering\u002Farchitectural-patterns","09.software-engineering\u002F06.architectural-patterns",{"title":3297,"path":3298,"stem":3299},"Паттерни взаємодії","\u002Fsoftware-engineering\u002Fpatterns-of-interaction","09.software-engineering\u002F07.patterns-of-interaction",{"title":3301,"path":3302,"stem":3303},"Евристика проєктування","\u002Fsoftware-engineering\u002Fdesign-heuristics","09.software-engineering\u002F08.design-heuristics",{"title":3305,"path":3306,"stem":3307},"Еволюція проєктних рішень","\u002Fsoftware-engineering\u002Fevolution-of-design-solutions","09.software-engineering\u002F09.evolution-of-design-solutions",{"title":3309,"path":3310,"stem":3311},"EventStorming","\u002Fsoftware-engineering\u002Feventstorming","09.software-engineering\u002F10.eventstorming",{"title":3313,"path":3314,"stem":3315},"DDD на практиці","\u002Fsoftware-engineering\u002Fddd-in-practice","09.software-engineering\u002F11.ddd-in-practice",{"title":3317,"icon":943,"path":3318,"stem":3319,"children":3320,"page":59},"DDD","\u002Fddd","10.ddd",[3321,3325,3329,3333,3337,3341,3345,3349,3353,3357,3361,3365,3369],{"title":3322,"path":3323,"stem":3324},"Аналіз предметної області","\u002Fddd\u002Fdomain-analysis","10.ddd\u002F01.domain-analysis",{"title":3326,"path":3327,"stem":3328},"Експертні знання про предметну область","\u002Fddd\u002Fdomain-expert-knowledge","10.ddd\u002F02.domain-expert-knowledge",{"title":3330,"path":3331,"stem":3332},"Як осмислити складність предметної області","\u002Fddd\u002Fmanaging-domain-complexity","10.ddd\u002F03.managing-domain-complexity",{"title":3334,"path":3335,"stem":3336},"Інтеграція обмежених контекстів","\u002Fddd\u002Fbounded-context-integration","10.ddd\u002F04.bounded-context-integration",{"title":3338,"path":3339,"stem":3340},"Реалізація простої бізнес-логіки","\u002Fddd\u002Fsimple-business-logic","10.ddd\u002F05.simple-business-logic",{"title":3342,"path":3343,"stem":3344},"Обробка складної бізнес-логіки","\u002Fddd\u002Fcomplex-business-logic","10.ddd\u002F06.complex-business-logic",{"title":3346,"path":3347,"stem":3348},"Моделювання фактора часу","\u002Fddd\u002Ftime-modeling","10.ddd\u002F07.time-modeling",{"title":3350,"path":3351,"stem":3352},"Глава 8. Архітектурні Патерни","\u002Fddd\u002Farchitectural-patterns","10.ddd\u002F08.architectural-patterns",{"title":3354,"path":3355,"stem":3356},"Глава 9. Патерни Взаємодії","\u002Fddd\u002Finteraction-patterns","10.ddd\u002F09.interaction-patterns",{"title":3358,"path":3359,"stem":3360},"Глава 10. Проектні Евристики","\u002Fddd\u002Fdesign-heuristics","10.ddd\u002F10.design-heuristics",{"title":3362,"path":3363,"stem":3364},"Глава 11. Еволюція Проектних Рішень","\u002Fddd\u002Fevolution-of-design-decisions","10.ddd\u002F11.evolution-of-design-decisions",{"title":3366,"path":3367,"stem":3368},"Глава 12. EventStorming","\u002Fddd\u002Fevent-storming","10.ddd\u002F12.event-storming",{"title":3370,"path":3371,"stem":3372},"Глава 13. DDD на Практиці","\u002Fddd\u002Fddd-in-practice","10.ddd\u002F13.ddd-in-practice",{"title":3374,"icon":3375,"path":3376,"stem":3377,"children":3378,"page":59},"Media Streaming","i-lucide-video","\u002Fmedia-streaming","11.media-streaming",[3379,3383,3387,3391,3395,3399,3403],{"title":3380,"path":3381,"stem":3382},"01. Магія Стрімінгу: Що відбувається, коли ви натискаєте \"Play\"","\u002Fmedia-streaming\u002Fintroduction","11.media-streaming\u002F01.introduction",{"title":3384,"path":3385,"stem":3386},"02. Анатомія Медіа: Кодеки, Контейнери та Стиснення","\u002Fmedia-streaming\u002Faudio-video-anatomy","11.media-streaming\u002F02.audio-video-anatomy",{"title":3388,"path":3389,"stem":3390},"03. The Gym: FFmpeg Deep Dive","\u002Fmedia-streaming\u002Fffmpeg-gym","11.media-streaming\u002F03.ffmpeg-gym",{"title":3392,"path":3393,"stem":3394},"04. HLS Protocol: HTTP Live Streaming у Деталях","\u002Fmedia-streaming\u002Fhls-protocol","11.media-streaming\u002F04.hls-protocol",{"title":3396,"path":3397,"stem":3398},"05. DASH Protocol: Відкритий Стандарт","\u002Fmedia-streaming\u002Fdash-protocol","11.media-streaming\u002F05.dash-protocol",{"title":3400,"path":3401,"stem":3402},"06. Масштабування: CDN та Adaptive Bitrate","\u002Fmedia-streaming\u002Fcdn-and-adaptive-bitrate","11.media-streaming\u002F06.cdn-and-adaptive-bitrate",{"title":3404,"path":3405,"stem":3406},"07. Війна із Затримкою (Latency)","\u002Fmedia-streaming\u002Frealtime-latency","11.media-streaming\u002F07.realtime-latency",{"title":3408,"icon":3409,"path":3410,"stem":3411,"children":3412,"page":59},"HTML & CSS","i-devicon-html5","\u002Fhtml-css","12.html-css",[3413,3417,3421,3425,3429,3433,3437,3441,3445,3449,3453,3457,3461,3465,3469,3473,3477,3481,3485,3489,3493,3497,3501,3505,3509,3513,3517,3521,3525,3529],{"title":3414,"path":3415,"stem":3416},"Вступ до HTML. Структура документа","\u002Fhtml-css\u002Fintro-html-structure","12.html-css\u002F01.intro-html-structure",{"title":3418,"path":3419,"stem":3420},"Форматування тексту в HTML","\u002Fhtml-css\u002Fhtml-text-formatting","12.html-css\u002F02.html-text-formatting",{"title":3422,"path":3423,"stem":3424},"Посилання та зображення в HTML","\u002Fhtml-css\u002Fhtml-links-images","12.html-css\u002F03.html-links-images",{"title":3426,"path":3427,"stem":3428},"Списки та таблиці в HTML","\u002Fhtml-css\u002Fhtml-lists-tables","12.html-css\u002F04.html-lists-tables",{"title":3430,"path":3431,"stem":3432},"Форми в HTML","\u002Fhtml-css\u002Fhtml-forms","12.html-css\u002F05.html-forms",{"title":3434,"path":3435,"stem":3436},"Семантичні елементи HTML5","\u002Fhtml-css\u002Fhtml-semantic-elements","12.html-css\u002F06.html-semantic-elements",{"title":3438,"path":3439,"stem":3440},"Мультимедіа та розширені елементи HTML","\u002Fhtml-css\u002Fhtml-multimedia-advanced","12.html-css\u002F07.html-multimedia-advanced",{"title":3442,"path":3443,"stem":3444},"Мікророзмітка та SEO в HTML","\u002Fhtml-css\u002Fhtml-microdata-seo","12.html-css\u002F08.html-microdata-seo",{"title":3446,"path":3447,"stem":3448},"Вступ до CSS. Селектори та специфічність","\u002Fhtml-css\u002Fcss-intro-selectors","12.html-css\u002F09.css-intro-selectors",{"title":3450,"path":3451,"stem":3452},"Блокова модель CSS. Відступи. Box Sizing","\u002Fhtml-css\u002Fcss-box-model","12.html-css\u002F10.css-box-model",{"title":3454,"path":3455,"stem":3456},"Розміри у CSS: повний довідник одиниць і ключових слів","\u002Fhtml-css\u002F10a.css-sizing","12.html-css\u002F10a.css-sizing",{"title":3458,"path":3459,"stem":3460},"Типографіка в CSS. Шрифти та текст","\u002Fhtml-css\u002Fcss-typography","12.html-css\u002F11.css-typography",{"title":3462,"path":3463,"stem":3464},"Кольори та фони в CSS","\u002Fhtml-css\u002Fcss-colors-backgrounds","12.html-css\u002F12.css-colors-backgrounds",{"title":3466,"path":3467,"stem":3468},"Тіні та фільтри в CSS","\u002Fhtml-css\u002F12b.css-shadows-filters","12.html-css\u002F12b.css-shadows-filters",{"title":3470,"path":3471,"stem":3472},"CSS Flexbox: Фундамент гнучких макетів","\u002Fhtml-css\u002Fcss-flexbox-fundamentals","12.html-css\u002F13.css-flexbox-fundamentals",{"title":3474,"path":3475,"stem":3476},"CSS Flexbox: Вирівнювання та Позиціонування","\u002Fhtml-css\u002Fcss-flexbox-alignment-sizing-and-patterns","12.html-css\u002F14.css-flexbox-alignment-sizing-and-patterns",{"title":3478,"path":3479,"stem":3480},"CSS Grid. Двовимірний макет. Частина 1","\u002Fhtml-css\u002Fcss-layout-grid","12.html-css\u002F15.css-layout-grid",{"title":3482,"path":3483,"stem":3484},"CSS Grid. Двовимірний макет. Частина 2","\u002Fhtml-css\u002Fcss-layout-grid-advanced","12.html-css\u002F16.css-layout-grid-advanced",{"title":3486,"path":3487,"stem":3488},"Позиціонування в CSS. Z-index. Stacking Context","\u002Fhtml-css\u002Fcss-positioning","12.html-css\u002F17.css-positioning",{"title":3490,"path":3491,"stem":3492},"CSS Анімації та Переходи","\u002Fhtml-css\u002Fcss-animations-transitions","12.html-css\u002F18.css-animations-transitions",{"title":3494,"path":3495,"stem":3496},"Адаптивний дизайн. Media Queries. Частина 1","\u002Fhtml-css\u002Fcss-responsive-media-queries","12.html-css\u002F19.css-responsive-media-queries",{"title":3498,"path":3499,"stem":3500},"Адаптивний дизайн. Частина 2: clamp(), Container Queries, @layer","\u002Fhtml-css\u002Fcss-responsive-advanced","12.html-css\u002F20.css-responsive-advanced",{"title":3502,"path":3503,"stem":3504},"CSS Custom Properties. Методології. Сучасний CSS","\u002Fhtml-css\u002Fcss-variables-methodologies","12.html-css\u002F21.css-variables-methodologies",{"title":3506,"path":3507,"stem":3508},"Сучасний CSS 2023–2025: Нові можливості","\u002Fhtml-css\u002Fcss-modern-features","12.html-css\u002F22.css-modern-features",{"title":3510,"path":3511,"stem":3512},"CSS Nesting, @layer, @scope та @property: нативний препроцесор","\u002Fhtml-css\u002F22a.css-nesting-modern-syntax","12.html-css\u002F22a.css-nesting-modern-syntax",{"title":3514,"path":3515,"stem":3516},"CSS для форм та інтерактивних станів","\u002Fhtml-css\u002Fcss-forms-interactive-states","12.html-css\u002F23.css-forms-interactive-states",{"title":3518,"path":3519,"stem":3520},"Доступність у CSS (CSS Accessibility)","\u002Fhtml-css\u002Fcss-accessibility","12.html-css\u002F24.css-accessibility",{"title":3522,"path":3523,"stem":3524},"CSS-функції та сучасні sizing primitives","\u002Fhtml-css\u002Fcss-functions-sizing","12.html-css\u002F25.css-functions-sizing",{"title":3526,"path":3527,"stem":3528},"Rendering Pipeline і CSS Performance","\u002Fhtml-css\u002Fcss-rendering-performance","12.html-css\u002F26.css-rendering-performance",{"title":3530,"path":3531,"stem":3532},"CSS Best Practices: типові ситуації та правильні рішення","\u002Fhtml-css\u002Fcss-best-practices","12.html-css\u002F27.css-best-practices",{"title":3534,"path":3535,"stem":3536,"children":3537,"page":59},"AWS","\u002Faws","13.aws",[3538,3542,3546,3550,3554,3558,3562,3566,3570,3574,3578,3582,3586,3590,3594,3598,3602,3606],{"title":3539,"path":3540,"stem":3541},"Реєстрація AWS акаунту та студентські програми","\u002Faws\u002Faccount-registration","13.aws\u002F00.account-registration",{"title":3543,"path":3544,"stem":3545},"Вступ до хмарних обчислень та AWS","\u002Faws\u002Fintroduction-to-cloud","13.aws\u002F01.introduction-to-cloud",{"title":3547,"path":3548,"stem":3549},"AWS IAM — Identity and Access Management","\u002Faws\u002Fiam","13.aws\u002F02.iam",{"title":3551,"path":3552,"stem":3553},"AWS IAM CLI — Довідник команд","\u002Faws\u002F02a.iam-doc","13.aws\u002F02a.iam-doc",{"title":3555,"path":3556,"stem":3557},"Docker та контейнеризація в AWS — ECR, ECS та Fargate","\u002Faws\u002Fdocker-ecs","13.aws\u002F03.docker-ecs",{"title":3559,"path":3560,"stem":3561},"AWS ECR \u002F ECS CLI — Довідник команд","\u002Faws\u002F03a.docker-ecs-doc","13.aws\u002F03a.docker-ecs-doc",{"title":3563,"path":3564,"stem":3565},"Amazon EC2 — Elastic Compute Cloud","\u002Faws\u002Fec2","13.aws\u002F04.ec2",{"title":3567,"path":3568,"stem":3569},"AWS EC2 CLI — Довідник команд","\u002Faws\u002F04a.ec2-doc","13.aws\u002F04a.ec2-doc",{"title":3571,"path":3572,"stem":3573},"Elastic Load Balancing та Auto Scaling","\u002Faws\u002Falb-asg","13.aws\u002F05.alb-asg",{"title":3575,"path":3576,"stem":3577},"Amazon S3 — Simple Storage Service","\u002Faws\u002Fs3","13.aws\u002F06.s3",{"title":3579,"path":3580,"stem":3581},"Amazon CloudFront — Content Delivery Network","\u002Faws\u002Fcloudfront","13.aws\u002F07.cloudfront",{"title":3583,"path":3584,"stem":3585},"Amazon RDS — Relational Database Service","\u002Faws\u002Frds","13.aws\u002F08.rds",{"title":3587,"path":3588,"stem":3589},"Amazon DynamoDB — NoSQL Database","\u002Faws\u002Fdynamodb","13.aws\u002F09.dynamodb",{"title":3591,"path":3592,"stem":3593},"AWS Lambda та Serverless Compute","\u002Faws\u002Flambda","13.aws\u002F10.lambda",{"title":3595,"path":3596,"stem":3597},"Amazon Bedrock - Foundation Models, RAG та Agents","\u002Faws\u002Fbedrock","13.aws\u002F22.bedrock",{"title":3599,"path":3600,"stem":3601},"Amazon Rekognition - Комп'ютерний зір","\u002Faws\u002Frekognition","13.aws\u002F23.rekognition",{"title":3603,"path":3604,"stem":3605},"Amazon Textract - Інтелектуальний аналіз документів","\u002Faws\u002Ftextract","13.aws\u002F24.textract",{"title":3607,"path":3608,"stem":3609},"Amazon Polly, Transcribe, Comprehend та Translate","\u002Faws\u002Faudio-nlp-services","13.aws\u002F25.audio-nlp-services",{"title":3611,"path":3612,"stem":3613,"children":3614,"page":59},"Ai Development","\u002Fai-development","14.ai-development",[3615],{"title":3616,"path":3617,"stem":3618,"children":3619,"page":59},"Foundations","\u002Fai-development\u002Ffoundations","14.ai-development\u002F00.foundations",[3620],{"title":3621,"path":3622,"stem":3623},"Модуль 0.1. Що таке Large Language Model (LLM)","\u002Fai-development\u002Ffoundations\u002Fwhat-is-llm","14.ai-development\u002F00.foundations\u002F01.what-is-llm",{"title":3625,"path":3626,"stem":3627,"children":3628,"page":59},"React Native","\u002Freact-native","15.react-native",[3629,3650],{"title":3630,"path":3631,"stem":3632,"children":3633,"page":59},"Version1","\u002Freact-native\u002Fversion1","15.react-native\u002Fversion1",[3634,3638,3642,3646],{"title":3635,"path":3636,"stem":3637},"Що таке React Native","\u002Freact-native\u002Fversion1\u002Fwhat-is-react-native","15.react-native\u002Fversion1\u002F01.what-is-react-native",{"title":3639,"path":3640,"stem":3641},"Як влаштований React Native «під капотом»","\u002Freact-native\u002Fversion1\u002Freact-native-architecture","15.react-native\u002Fversion1\u002F02.react-native-architecture",{"title":3643,"path":3644,"stem":3645},"Від React до React Native: ключові відмінності","\u002Freact-native\u002Fversion1\u002Freact-native-vs-react","15.react-native\u002Fversion1\u002F03.react-native-vs-react",{"title":3647,"path":3648,"stem":3649},"View та Text — фундаментальні будівельні блоки","\u002Freact-native\u002Fversion1\u002Fview-and-text","15.react-native\u002Fversion1\u002F04.view-and-text",{"title":3651,"path":3652,"stem":3653,"children":3654,"page":59},"Version2","\u002Freact-native\u002Fversion2","15.react-native\u002Fversion2",[3655,3659,3663,3667,3671,3675,3679,3683,3687,3691,3695,3699,3703,3707,3711,3715,3719,3723,3727,3731,3735,3739,3743,3747,3751,3755,3759],{"title":3656,"path":3657,"stem":3658},"React Native — навіщо він потрібен","\u002Freact-native\u002Fversion2\u002Fwhy-react-native","15.react-native\u002Fversion2\u002F01.why-react-native",{"title":3660,"path":3661,"stem":3662},"Налаштування середовища розробки","\u002Freact-native\u002Fversion2\u002Fenvironment-setup","15.react-native\u002Fversion2\u002F02.environment-setup",{"title":3664,"path":3665,"stem":3666},"Expo і класичний React Native — два шляхи одного фреймворку","\u002Freact-native\u002Fversion2\u002Fexpo-vs-cli-landscape","15.react-native\u002Fversion2\u002F03.expo-vs-cli-landscape",{"title":3668,"path":3669,"stem":3670},"Середовище Expo — перший запуск","\u002Freact-native\u002Fversion2\u002Fexpo-setup-and-tooling","15.react-native\u002Fversion2\u002F04.expo-setup-and-tooling",{"title":3672,"path":3673,"stem":3674},"Структура проєкту та перші UI-примітиви","\u002Freact-native\u002Fversion2\u002Fproject-structure-and-conventions","15.react-native\u002Fversion2\u002F05.project-structure-and-conventions",{"title":3676,"path":3677,"stem":3678},"Базові компоненти React Native","\u002Freact-native\u002Fversion2\u002Fcore-components","15.react-native\u002Fversion2\u002F06.core-components",{"title":3680,"path":3681,"stem":3682},"Flexbox і layout у React Native","\u002Freact-native\u002Fversion2\u002Fflexbox-and-layout","15.react-native\u002Fversion2\u002F07.flexbox-and-layout",{"title":3684,"path":3685,"stem":3686},"StyleSheet і теми (light \u002F dark)","\u002Freact-native\u002Fversion2\u002Fstylesheet-and-theming","15.react-native\u002Fversion2\u002F08.stylesheet-and-theming",{"title":3688,"path":3689,"stem":3690},"Списки та віртуалізація","\u002Freact-native\u002Fversion2\u002Flists-and-virtualization","15.react-native\u002Fversion2\u002F09.lists-and-virtualization",{"title":3692,"path":3693,"stem":3694},"Форми, ввід і валідація","\u002Freact-native\u002Fversion2\u002Fforms-input-validation","15.react-native\u002Fversion2\u002F10.forms-input-validation",{"title":3696,"path":3697,"stem":3698},"Основи Expo Router","\u002Freact-native\u002Fversion2\u002Fexpo-router-basics","15.react-native\u002Fversion2\u002F11.expo-router-basics",{"title":3700,"path":3701,"stem":3702},"Вкладені навігатори та модалки","\u002Freact-native\u002Fversion2\u002Fnested-navigators-and-modals","15.react-native\u002Fversion2\u002F12.nested-navigators-and-modals",{"title":3704,"path":3705,"stem":3706},"Deep linking і параметри маршрутів","\u002Freact-native\u002Fversion2\u002Fdeep-linking-and-params","15.react-native\u002Fversion2\u002F13.deep-linking-and-params",{"title":3708,"path":3709,"stem":3710},"Робота з мережею та життєвий цикл застосунку","\u002Freact-native\u002Fversion2\u002Fnetworking-and-app-lifecycle","15.react-native\u002Fversion2\u002F14.networking-and-app-lifecycle",{"title":3712,"path":3713,"stem":3714},"Redux Toolkit на мобільних платформах","\u002Freact-native\u002Fversion2\u002Fredux-toolkit-on-mobile","15.react-native\u002Fversion2\u002F15.redux-toolkit-on-mobile",{"title":3716,"path":3717,"stem":3718},"RTK Query на мобільних платформах","\u002Freact-native\u002Fversion2\u002Frtk-query-mobile","15.react-native\u002Fversion2\u002F16.rtk-query-mobile",{"title":3720,"path":3721,"stem":3722},"Автентифікація та Безпечне Зберігання","\u002Freact-native\u002Fversion2\u002Fauth-secure-storage","15.react-native\u002Fversion2\u002F18.auth-secure-storage",{"title":3724,"path":3725,"stem":3726},"Локальне сховище — AsyncStorage, MMKV, SQLite","\u002Freact-native\u002Fversion2\u002Flocal-storage-mmkv-sqlite","15.react-native\u002Fversion2\u002F19.local-storage-mmkv-sqlite",{"title":3728,"path":3729,"stem":3730},"Офлайн-First і синхронізація","\u002Freact-native\u002Fversion2\u002Foffline-first-sync","15.react-native\u002Fversion2\u002F20.offline-first-sync",{"title":3732,"path":3733,"stem":3734},"Камера, медіа та файлова система","\u002Freact-native\u002Fversion2\u002Fcamera-media-filesystem","15.react-native\u002Fversion2\u002F21.camera-media-filesystem",{"title":3736,"path":3737,"stem":3738},"Карти та геолокація","\u002Freact-native\u002Fversion2\u002Fmaps-and-location","15.react-native\u002Fversion2\u002F22.maps-and-location",{"title":3740,"path":3741,"stem":3742},"Жести та дотики","\u002Freact-native\u002Fversion2\u002Fgestures-and-touch","15.react-native\u002Fversion2\u002F23.gestures-and-touch",{"title":3744,"path":3745,"stem":3746},"Анімації з Reanimated","\u002Freact-native\u002Fversion2\u002Freanimated-animations","15.react-native\u002Fversion2\u002F24.reanimated-animations",{"title":3748,"path":3749,"stem":3750},"Push і локальні сповіщення","\u002Freact-native\u002Fversion2\u002Fpush-and-local-notifications","15.react-native\u002Fversion2\u002F25.push-and-local-notifications",{"title":3752,"path":3753,"stem":3754},"Інтернаціоналізація та доступність","\u002Freact-native\u002Fversion2\u002Faccessibility-and-i18n","15.react-native\u002Fversion2\u002F26.accessibility-and-i18n",{"title":3756,"path":3757,"stem":3758},"EAS Build та профілі збірки","\u002Freact-native\u002Fversion2\u002Feas-build-and-profiles","15.react-native\u002Fversion2\u002F29.eas-build-and-profiles",{"title":3760,"path":3761,"stem":3762},"Публікація в App Store та Google Play","\u002Freact-native\u002Fversion2\u002Fapp-store-play-release","15.react-native\u002Fversion2\u002F30.app-store-play-release",{"title":3764,"path":3765,"stem":3766,"children":3767,"page":59},"Ai Python","\u002Fai-python","16.ai-python",[3768,3777,3786,3795,3824,3850,3875,3908,3925,3938,3947,3960,3969,3990,4003,4072],{"title":3769,"path":3770,"stem":3771,"children":3772,"page":59},"Intro To Ai","\u002Fai-python\u002Fintro-to-ai","16.ai-python\u002F01.intro-to-ai",[3773],{"title":3774,"path":3775,"stem":3776},"Вступ до штучного інтелекту та машинного навчання","\u002Fai-python\u002Fintro-to-ai\u002Fintro-to-ai","16.ai-python\u002F01.intro-to-ai\u002F01.intro-to-ai",{"title":3778,"path":3779,"stem":3780,"children":3781,"page":59},"Jupyter Notebook","\u002Fai-python\u002Fjupyter-notebook","16.ai-python\u002F02.jupyter-notebook",[3782],{"title":3783,"path":3784,"stem":3785},"Знайомство з Jupyter Notebook та JupyterLab","\u002Fai-python\u002Fjupyter-notebook\u002Fjupyter-notebook","16.ai-python\u002F02.jupyter-notebook\u002F02.jupyter-notebook",{"title":3787,"path":3788,"stem":3789,"children":3790,"page":59},"Numpy Pandas","\u002Fai-python\u002Fnumpy-pandas","16.ai-python\u002F03.numpy-pandas",[3791],{"title":3792,"path":3793,"stem":3794},"Робота з даними з використанням NumPy і pandas","\u002Fai-python\u002Fnumpy-pandas\u002Fnumpy-pandas","16.ai-python\u002F03.numpy-pandas\u002F03.numpy-pandas",{"title":3796,"path":3797,"stem":3798,"children":3799,"page":59},"Statistics Basics","\u002Fai-python\u002Fstatistics-basics","16.ai-python\u002F04.statistics-basics",[3800,3804,3808,3812,3816,3820],{"title":3801,"path":3802,"stem":3803},"Випадкові величини та їх типи","\u002Fai-python\u002Fstatistics-basics\u002Frandom-variables","16.ai-python\u002F04.statistics-basics\u002F01.random-variables",{"title":3805,"path":3806,"stem":3807},"Міри центральної тенденції","\u002Fai-python\u002Fstatistics-basics\u002Fcentral-tendency","16.ai-python\u002F04.statistics-basics\u002F02.central-tendency",{"title":3809,"path":3810,"stem":3811},"Міри варіації (розсіювання)","\u002Fai-python\u002Fstatistics-basics\u002Fvariability","16.ai-python\u002F04.statistics-basics\u002F03.variability",{"title":3813,"path":3814,"stem":3815},"Розподіли випадкових величин","\u002Fai-python\u002Fstatistics-basics\u002Fdistributions","16.ai-python\u002F04.statistics-basics\u002F04.distributions",{"title":3817,"path":3818,"stem":3819},"Кореляція та взаємозв'язки","\u002Fai-python\u002Fstatistics-basics\u002Fcorrelation","16.ai-python\u002F04.statistics-basics\u002F05.correlation",{"title":3821,"path":3822,"stem":3823},"Викиди та аномалії","\u002Fai-python\u002Fstatistics-basics\u002Foutliers","16.ai-python\u002F04.statistics-basics\u002F06.outliers",{"title":3825,"path":3826,"stem":3827,"children":3828},"Візуалізація даних за допомогою matplotlib","\u002Fai-python\u002Fdata-visualization","16.ai-python\u002F05.data-visualization\u002Findex",[3829,3830,3834,3838,3842,3846],{"title":3825,"path":3826,"stem":3827},{"title":3831,"path":3832,"stem":3833},"Основи matplotlib — Figure, Axes та перший графік","\u002Fai-python\u002Fdata-visualization\u002Fmatplotlib-basics","16.ai-python\u002F05.data-visualization\u002F01.matplotlib-basics",{"title":3835,"path":3836,"stem":3837},"Візуалізація розподілів — гістограми та box plots","\u002Fai-python\u002Fdata-visualization\u002Fdistributions","16.ai-python\u002F05.data-visualization\u002F02.distributions",{"title":3839,"path":3840,"stem":3841},"Візуалізація залежностей — scatter plots та кореляція","\u002Fai-python\u002Fdata-visualization\u002Frelationships","16.ai-python\u002F05.data-visualization\u002F03.relationships",{"title":3843,"path":3844,"stem":3845},"Візуалізація категоріальних даних — bar charts та pie charts","\u002Fai-python\u002Fdata-visualization\u002Fcategorical","16.ai-python\u002F05.data-visualization\u002F04.categorical",{"title":3847,"path":3848,"stem":3849},"Композиції та стилізація — subplots та багатопанельні дашборди","\u002Fai-python\u002Fdata-visualization\u002Fsubplots-styling","16.ai-python\u002F05.data-visualization\u002F05.subplots-styling",{"title":3851,"path":3852,"stem":3853,"children":3854,"page":59},"Linear Regression","\u002Fai-python\u002Flinear-regression","16.ai-python\u002F06.linear-regression",[3855,3859,3863,3867,3871],{"title":3856,"path":3857,"stem":3858},"Регресійна задача та лінійна регресія з однією змінною","\u002Fai-python\u002Flinear-regression\u002Fregression-task","16.ai-python\u002F06.linear-regression\u002F01.regression-task",{"title":3860,"path":3861,"stem":3862},"Метрики якості регресії — як оцінити модель","\u002Fai-python\u002Flinear-regression\u002Fquality-metrics","16.ai-python\u002F06.linear-regression\u002F02.quality-metrics",{"title":3864,"path":3865,"stem":3866},"Градієнтний спуск — як модель навчається","\u002Fai-python\u002Flinear-regression\u002Fgradient-descent","16.ai-python\u002F06.linear-regression\u002F03.gradient-descent",{"title":3868,"path":3869,"stem":3870},"Множинна лінійна регресія — модель з багатьма ознаками","\u002Fai-python\u002Flinear-regression\u002Fmultiple-regression","16.ai-python\u002F06.linear-regression\u002F04.multiple-regression",{"title":3872,"path":3873,"stem":3874},"Практичні завдання та резюме модуля","\u002Fai-python\u002Flinear-regression\u002Fpractice","16.ai-python\u002F06.linear-regression\u002F05.practice",{"title":3876,"path":3877,"stem":3878,"children":3879,"page":59},"Practical Regression","\u002Fai-python\u002Fpractical-regression","16.ai-python\u002F07.practical-regression",[3880,3884,3888,3892,3896,3900,3904],{"title":3881,"path":3882,"stem":3883},"Знайомство з scikit-learn","\u002Fai-python\u002Fpractical-regression\u002Fintro-scikit-learn","16.ai-python\u002F07.practical-regression\u002F01.intro-scikit-learn",{"title":3885,"path":3886,"stem":3887},"Exploratory Data Analysis датасету Housing Prices","\u002Fai-python\u002Fpractical-regression\u002Fhousing-dataset-eda","16.ai-python\u002F07.practical-regression\u002F02.housing-dataset-eda",{"title":3889,"path":3890,"stem":3891},"Попередня обробка даних (Data Preprocessing)","\u002Fai-python\u002Fpractical-regression\u002Fdata-preprocessing","16.ai-python\u002F07.practical-regression\u002F03.data-preprocessing",{"title":3893,"path":3894,"stem":3895},"Train\u002FTest Split та перша повноцінна модель","\u002Fai-python\u002Fpractical-regression\u002Ftrain-test-split","16.ai-python\u002F07.practical-regression\u002F04.train-test-split",{"title":3897,"path":3898,"stem":3899},"Перенавчання та недонавчання","\u002Fai-python\u002Fpractical-regression\u002Foverfitting-underfitting","16.ai-python\u002F07.practical-regression\u002F05.overfitting-underfitting",{"title":3901,"path":3902,"stem":3903},"Крос-валідація (Cross-Validation)","\u002Fai-python\u002Fpractical-regression\u002Fcross-validation","16.ai-python\u002F07.practical-regression\u002F06.cross-validation",{"title":3905,"path":3906,"stem":3907},"Гіперпараметри та їх оптимізація","\u002Fai-python\u002Fpractical-regression\u002Fhyperparameter-tuning","16.ai-python\u002F07.practical-regression\u002F07.hyperparameter-tuning",{"title":3909,"path":3910,"stem":3911,"children":3912,"page":59},"Polynomial Regression","\u002Fai-python\u002Fpolynomial-regression","16.ai-python\u002F08.polynomial-regression",[3913,3917,3921],{"title":3914,"path":3915,"stem":3916},"Нелінійні залежності та поліноміальна регресія","\u002Fai-python\u002Fpolynomial-regression\u002Fnonlinear-patterns","16.ai-python\u002F08.polynomial-regression\u002F01.nonlinear-patterns",{"title":3918,"path":3919,"stem":3920},"Регуляризація в регресії — Ridge та Lasso","\u002Fai-python\u002Fpolynomial-regression\u002Fregularization-methods","16.ai-python\u002F08.polynomial-regression\u002F02.regularization-methods",{"title":3922,"path":3923,"stem":3924},"Практика — поліноміальна регресія та регуляризація на Housing Prices","\u002Fai-python\u002Fpolynomial-regression\u002Fhousing-prices-practice","16.ai-python\u002F08.polynomial-regression\u002F03.housing-prices-practice",{"title":3926,"path":3927,"stem":3928,"children":3929,"page":59},"Decision Trees Random Forest","\u002Fai-python\u002Fdecision-trees-random-forest","16.ai-python\u002F09.decision-trees-random-forest",[3930,3934],{"title":3931,"path":3932,"stem":3933},"Дерева рішень — моделі з прозорою та зрозумілою логікою","\u002Fai-python\u002Fdecision-trees-random-forest\u002Fdecision-trees","16.ai-python\u002F09.decision-trees-random-forest\u002F01.decision-trees",{"title":3935,"path":3936,"stem":3937},"Random Forest — ансамблі дерев рішень","\u002Fai-python\u002Fdecision-trees-random-forest\u002Frandom-forest","16.ai-python\u002F09.decision-trees-random-forest\u002F02.random-forest",{"title":3939,"path":3940,"stem":3941,"children":3942,"page":59},"Gradient Boosting","\u002Fai-python\u002Fgradient-boosting","16.ai-python\u002F10.gradient-boosting",[3943],{"title":3944,"path":3945,"stem":3946},"Градієнтний бустинг та XGBoost — послідовне виправлення помилок","\u002Fai-python\u002Fgradient-boosting\u002Fgradient-boosting-xgboost","16.ai-python\u002F10.gradient-boosting\u002F01.gradient-boosting-xgboost",{"title":3948,"path":3949,"stem":3950,"children":3951,"page":59},"Logistic Regression Classification","\u002Fai-python\u002Flogistic-regression-classification","16.ai-python\u002F11.logistic-regression-classification",[3952,3956],{"title":3953,"path":3954,"stem":3955},"Основи класифікації та логістична регресія","\u002Fai-python\u002Flogistic-regression-classification\u002Fclassification-basics","16.ai-python\u002F11.logistic-regression-classification\u002F01.classification-basics",{"title":3957,"path":3958,"stem":3959},"Метрики якості класифікації","\u002Fai-python\u002Flogistic-regression-classification\u002Fclassification-metrics","16.ai-python\u002F11.logistic-regression-classification\u002F02.classification-metrics",{"title":3961,"path":3962,"stem":3963,"children":3964,"page":59},"Neural Networks Basics","\u002Fai-python\u002Fneural-networks-basics","16.ai-python\u002F12.neural-networks-basics",[3965],{"title":3966,"path":3967,"stem":3968},"Вступ до нейронних мереж — від персептрона до багатошарових мереж","\u002Fai-python\u002Fneural-networks-basics\u002Fperceptron-to-mlp","16.ai-python\u002F12.neural-networks-basics\u002F01.perceptron-to-mlp",{"title":3970,"path":3971,"stem":3972,"children":3973,"page":59},"Pytorch Intro","\u002Fai-python\u002Fpytorch-intro","16.ai-python\u002F13.pytorch-intro",[3974,3978,3982,3986],{"title":3975,"path":3976,"stem":3977},"Тензори та автоматичне диференціювання в PyTorch","\u002Fai-python\u002Fpytorch-intro\u002Ftensors-and-autograd","16.ai-python\u002F13.pytorch-intro\u002F01.tensors-and-autograd",{"title":3979,"path":3980,"stem":3981},"Побудова та тренування нейронних мереж у PyTorch","\u002Fai-python\u002Fpytorch-intro\u002Fbuilding-and-training","16.ai-python\u002F13.pytorch-intro\u002F02.building-and-training",{"title":3983,"path":3984,"stem":3985},"Робота з даними та регуляризація в PyTorch","\u002Fai-python\u002Fpytorch-intro\u002Fdata-and-regularization","16.ai-python\u002F13.pytorch-intro\u002F03.data-and-regularization",{"title":3987,"path":3988,"stem":3989},"Просунуті теми PyTorch — GPU, оптимізація та deployment","\u002Fai-python\u002Fpytorch-intro\u002Fadvanced-topics","16.ai-python\u002F13.pytorch-intro\u002F04.advanced-topics",{"title":3991,"path":3992,"stem":3993,"children":3994,"page":59},"Activation Functions Heart Disease","\u002Fai-python\u002Factivation-functions-heart-disease","16.ai-python\u002F14.activation-functions-heart-disease",[3995,3999],{"title":3996,"path":3997,"stem":3998},"Функції активації та побудова нейронної мережі для передбачення вад серця","\u002Fai-python\u002Factivation-functions-heart-disease\u002Fheart-disease-prediction","16.ai-python\u002F14.activation-functions-heart-disease\u002F01.heart-disease-prediction",{"title":4000,"path":4001,"stem":4002},"Бонус — Повний приклад Student Performance Prediction","\u002Fai-python\u002Factivation-functions-heart-disease\u002Fstudent-performance-bonus","16.ai-python\u002F14.activation-functions-heart-disease\u002F02.student-performance-bonus",{"title":4004,"path":4005,"stem":4006,"children":4007,"page":59},"Cnn Image Classification","\u002Fai-python\u002Fcnn-image-classification","16.ai-python\u002F15.cnn-image-classification",[4008,4012,4016,4020,4024,4028,4032,4036,4040,4044,4048,4052,4056,4060,4064,4068],{"title":4009,"path":4010,"stem":4011},"Вступ до комп'ютерного зору та проблеми Dense-мереж","\u002Fai-python\u002Fcnn-image-classification\u002Fintro-computer-vision","16.ai-python\u002F15.cnn-image-classification\u002F01.intro-computer-vision",{"title":4013,"path":4014,"stem":4015},"Навіщо потрібна згортка — від нейрона-шаблону до ковзного детектора","\u002Fai-python\u002Fcnn-image-classification\u002Fwhy-convolution","16.ai-python\u002F15.cnn-image-classification\u002F02.why-convolution",{"title":4017,"path":4018,"stem":4019},"Згортка крок за кроком — ядро, карта ознак і розмір результату","\u002Fai-python\u002Fcnn-image-classification\u002Fconvolution-step-by-step","16.ai-python\u002F15.cnn-image-classification\u002F03.convolution-step-by-step",{"title":4021,"path":4022,"stem":4023},"Що «бачить» ядро — читаємо карту ознак і класичні фільтри","\u002Fai-python\u002Fcnn-image-classification\u002Ffilters-what-kernel-sees","16.ai-python\u002F15.cnn-image-classification\u002F04.filters-what-kernel-sees",{"title":4025,"path":4026,"stem":4027},"Padding і stride — що робити з краями картинки та її розміром","\u002Fai-python\u002Fcnn-image-classification\u002Fpadding-and-stride","16.ai-python\u002F15.cnn-image-classification\u002F05.padding-and-stride",{"title":4029,"path":4030,"stem":4031},"Ядро, що навчається — від випадкових чисел до детектора країв","\u002Fai-python\u002Fcnn-image-classification\u002Flearnable-kernels","16.ai-python\u002F15.cnn-image-classification\u002F06.learnable-kernels",{"title":4033,"path":4034,"stem":4035},"Пулінг і поле зору — стискаємо карту ознак і дивимося ширше","\u002Fai-python\u002Fcnn-image-classification\u002Fpooling","16.ai-python\u002F15.cnn-image-classification\u002F07.pooling",{"title":4037,"path":4038,"stem":4039},"Багатоканальна згортка — ядро-куб, кольорове фото та підрахунок параметрів","\u002Fai-python\u002Fcnn-image-classification\u002Fmultichannel-convolution","16.ai-python\u002F15.cnn-image-classification\u002F08.multichannel-convolution",{"title":4041,"path":4042,"stem":4043},"Повна CNN для MNIST — збираємо, навчаємо, перевіряємо","\u002Fai-python\u002Fcnn-image-classification\u002Fcnn-mnist","16.ai-python\u002F15.cnn-image-classification\u002F09.cnn-mnist",{"title":4045,"path":4046,"stem":4047},"CNN для CIFAR-10 — коли задача справді складна","\u002Fai-python\u002Fcnn-image-classification\u002Fcnn-cifar10","16.ai-python\u002F15.cnn-image-classification\u002F10.cnn-cifar10",{"title":4049,"path":4050,"stem":4051},"Міні-батчі, DataLoader і швидкість навчання","\u002Fai-python\u002Fcnn-image-classification\u002Fmini-batch-learning-rate","16.ai-python\u002F15.cnn-image-classification\u002F11.mini-batch-learning-rate",{"title":4053,"path":4054,"stem":4055},"Ініціалізація ваг і Batch Normalization","\u002Fai-python\u002Fcnn-image-classification\u002Fweight-init-batchnorm","16.ai-python\u002F15.cnn-image-classification\u002F12.weight-init-batchnorm",{"title":4057,"path":4058,"stem":4059},"LayerNorm і обрізання градієнтів","\u002Fai-python\u002Fcnn-image-classification\u002Flayernorm-gradient-clipping","16.ai-python\u002F15.cnn-image-classification\u002F13.layernorm-gradient-clipping",{"title":4061,"path":4062,"stem":4063},"Аугментація даних","\u002Fai-python\u002Fcnn-image-classification\u002Fdata-augmentation","16.ai-python\u002F15.cnn-image-classification\u002F14.data-augmentation",{"title":4065,"path":4066,"stem":4067},"Глибокі мережі та ResNet","\u002Fai-python\u002Fcnn-image-classification\u002Fdeep-networks-resnet","16.ai-python\u002F15.cnn-image-classification\u002F15.deep-networks-resnet",{"title":4069,"path":4070,"stem":4071},"Пневмонія на рентгені - метрики, transfer learning, Grad-CAM","\u002Fai-python\u002Fcnn-image-classification\u002Fpneumonia-transfer-learning","16.ai-python\u002F15.cnn-image-classification\u002F16.pneumonia-transfer-learning",{"title":4073,"path":4074,"stem":4075,"children":4076,"page":59},"Natural Language Processing","\u002Fai-python\u002Fnatural-language-processing","16.ai-python\u002F16.natural-language-processing",[4077,4081,4085,4089,4093,4097,4101,4105,4109,4113,4117,4121,4125,4129,4133,4137],{"title":4078,"path":4079,"stem":4080},"Текст як дані — чому мова складна для комп'ютера","\u002Fai-python\u002Fnatural-language-processing\u002Ftext-as-data","16.ai-python\u002F16.natural-language-processing\u002F01.text-as-data",{"title":4082,"path":4083,"stem":4084},"Токенізація — розбиття тексту на слова й речення","\u002Fai-python\u002Fnatural-language-processing\u002Ftokenization","16.ai-python\u002F16.natural-language-processing\u002F02.tokenization",{"title":4086,"path":4087,"stem":4088},"Стеммінг, лемматизація та стоп-слова","\u002Fai-python\u002Fnatural-language-processing\u002Fstemming-lemmatization-stopwords","16.ai-python\u002F16.natural-language-processing\u002F03.stemming-lemmatization-stopwords",{"title":4090,"path":4091,"stem":4092},"Корпус та частоти слів","\u002Fai-python\u002Fnatural-language-processing\u002Fcorpus-and-frequency","16.ai-python\u002F16.natural-language-processing\u002F04.corpus-and-frequency",{"title":4094,"path":4095,"stem":4096},"Мішок слів — перше представлення тексту числами","\u002Fai-python\u002Fnatural-language-processing\u002Fbag-of-words","16.ai-python\u002F16.natural-language-processing\u002F05.bag-of-words",{"title":4098,"path":4099,"stem":4100},"Класифікація тексту — baseline на мішку слів","\u002Fai-python\u002Fnatural-language-processing\u002Ftext-classification-baseline","16.ai-python\u002F16.natural-language-processing\u002F06.text-classification-baseline",{"title":4102,"path":4103,"stem":4104},"Від one-hot до embeddings — щільні вектори слів","\u002Fai-python\u002Fnatural-language-processing\u002Ffrom-one-hot-to-embeddings","16.ai-python\u002F16.natural-language-processing\u002F07.from-one-hot-to-embeddings",{"title":4106,"path":4107,"stem":4108},"Word2Vec — навчання векторів слів з контексту","\u002Fai-python\u002Fnatural-language-processing\u002Fword2vec","16.ai-python\u002F16.natural-language-processing\u002F08.word2vec",{"title":4110,"path":4111,"stem":4112},"GloVe — глобальні вектори слів та попередньо навчені моделі","\u002Fai-python\u002Fnatural-language-processing\u002Fglove-pretrained-embeddings","16.ai-python\u002F16.natural-language-processing\u002F09.glove-pretrained-embeddings",{"title":4114,"path":4115,"stem":4116},"Embeddings для класифікації — від мішка слів до векторів","\u002Fai-python\u002Fnatural-language-processing\u002Fembeddings-for-classification","16.ai-python\u002F16.natural-language-processing\u002F10.embeddings-for-classification",{"title":4118,"path":4119,"stem":4120},"Мовні моделі та послідовності — від біграм до батчів","\u002Fai-python\u002Fnatural-language-processing\u002Flanguage-models-and-sequences","16.ai-python\u002F16.natural-language-processing\u002F11.language-models-and-sequences",{"title":4122,"path":4123,"stem":4124},"Лекція 12: Рекурентні нейронні мережі (RNN)","\u002Fai-python\u002Fnatural-language-processing\u002Frnn","16.ai-python\u002F16.natural-language-processing\u002F12.rnn",{"title":4126,"path":4127,"stem":4128},"Лекція 13: LSTM і GRU","\u002Fai-python\u002Fnatural-language-processing\u002Flstm-gru","16.ai-python\u002F16.natural-language-processing\u002F13.lstm-gru",{"title":4130,"path":4131,"stem":4132},"Лекція 14: Sequence-to-Sequence і Attention","\u002Fai-python\u002Fnatural-language-processing\u002Fseq2seq-attention","16.ai-python\u002F16.natural-language-processing\u002F14.seq2seq-attention",{"title":4134,"path":4135,"stem":4136},"Лекція 15: Transformer","\u002Fai-python\u002Fnatural-language-processing\u002Ftransformer","16.ai-python\u002F16.natural-language-processing\u002F15.transformer",{"title":4138,"path":4139,"stem":4140},"Лекція 16: Pretrained Models & Hugging Face","\u002Fai-python\u002Fnatural-language-processing\u002Fpretrained-models-sentiment","16.ai-python\u002F16.natural-language-processing\u002F16.pretrained-models-sentiment",{"title":4142,"icon":658,"path":4143,"stem":4144,"children":4145,"page":59},"Клієнт-серверна архітектура","\u002Fclient-server-architecture","17.client-server-architecture",[4146,4150,4154,4158,4162,4166,4170,4174,4178,4182,4186,4190,4194,4198,4202,4206,4210,4214],{"title":4147,"path":4148,"stem":4149},"Архітектура клієнт-серверних систем та основи Go","\u002Fclient-server-architecture\u002Fclient-server-architecture-and-go","17.client-server-architecture\u002F01.client-server-architecture-and-go",{"title":4151,"path":4152,"stem":4153},"Система типів та модель пам’яті мови Go","\u002Fclient-server-architecture\u002Ftype-system-and-memory-model","17.client-server-architecture\u002F02.type-system-and-memory-model",{"title":4155,"path":4156,"stem":4157},"Інтерфейси та модель конкурентності мови Go","\u002Fclient-server-architecture\u002Finterfaces-and-concurrency-model","17.client-server-architecture\u002F03.interfaces-and-concurrency-model",{"title":4159,"path":4160,"stem":4161},"Сокетне програмування та протокол TCP у Go","\u002Fclient-server-architecture\u002Ftcp-socket-programming","17.client-server-architecture\u002F04.tcp-socket-programming",{"title":4163,"path":4164,"stem":4165},"Протокол UDP та датаграмна передача даних","\u002Fclient-server-architecture\u002Fudp-datagram-transmission","17.client-server-architecture\u002F05.udp-datagram-transmission",{"title":4167,"path":4168,"stem":4169},"Криптографічний захист каналів зв","\u002Fclient-server-architecture\u002Ftls-cryptographic-channel-protection","17.client-server-architecture\u002F06.tls-cryptographic-channel-protection",{"title":4171,"path":4172,"stem":4173},"Прикладні мережеві протоколи DNS та SMTP","\u002Fclient-server-architecture\u002Fdns-smtp-application-protocols","17.client-server-architecture\u002F07.dns-smtp-application-protocols",{"title":4175,"path":4176,"stem":4177},"Протокол HTTP та стандартний вебсервер Go","\u002Fclient-server-architecture\u002Fhttp-protocol-and-web-server","17.client-server-architecture\u002F08.http-protocol-and-web-server",{"title":4179,"path":4180,"stem":4181},"Проєктування REST API та маршрутизація засобами Chi","\u002Fclient-server-architecture\u002Frest-api-design-and-chi-routing","17.client-server-architecture\u002F09.rest-api-design-and-chi-routing",{"title":4183,"path":4184,"stem":4185},"Лекція 10. Шарувата архітектура та конвеєри обробки запитів","\u002Fclient-server-architecture\u002Flayered-architecture-and-middleware-pipelines","17.client-server-architecture\u002F10.layered-architecture-and-middleware-pipelines",{"title":4187,"path":4188,"stem":4189},"Лекція 11. Архітектура та маршрутизація фреймворку Gin","\u002Fclient-server-architecture\u002Fgin-framework-architecture-and-routing","17.client-server-architecture\u002F11.gin-framework-architecture-and-routing",{"title":4191,"path":4192,"stem":4193},"Лекція 12. Валідація даних, безпека та документування у Gin","\u002Fclient-server-architecture\u002Fdata-validation-security-and-documentation-in-gin","17.client-server-architecture\u002F12.data-validation-security-and-documentation-in-gin",{"title":4195,"path":4196,"stem":4197},"Лекція 13. Взаємодія з реляційними СУБД та технології ORM","\u002Fclient-server-architecture\u002Frelational-databases-and-orm","17.client-server-architecture\u002F13.relational-databases-and-orm",{"title":4199,"path":4200,"stem":4201},"Потокова передача даних та протокол WebSocket","\u002Fclient-server-architecture\u002Fstreaming-data-and-websockets","17.client-server-architecture\u002F14.streaming-data-and-websockets",{"title":4203,"path":4204,"stem":4205},"Міжсервісна взаємодія на основі протоколу gRPC","\u002Fclient-server-architecture\u002Fgrpc-inter-service-communication","17.client-server-architecture\u002F15.grpc-inter-service-communication",{"title":4207,"path":4208,"stem":4209},"Асинхронний обмін повідомленнями та протоколи черг","\u002Fclient-server-architecture\u002Fasynchronous-message-exchange-and-queue-protocols","17.client-server-architecture\u002F16.asynchronous-message-exchange-and-queue-protocols",{"title":4211,"path":4212,"stem":4213},"Протоколи потокового медіа та технологія WebRTC","\u002Fclient-server-architecture\u002Fstreaming-media-protocols-and-webrtc","17.client-server-architecture\u002F17.streaming-media-protocols-and-webrtc",{"title":4215,"path":4216,"stem":4217},"Моніторинг, безпека та контейнеризація застосунків","\u002Fclient-server-architecture\u002Fmonitoring-security-and-containerization","17.client-server-architecture\u002F18.monitoring-security-and-containerization",{"title":4219,"icon":2150,"path":4220,"stem":4221,"children":4222,"page":59},"Розробка WEB-застосувань","\u002Fweb-development","18.web-development",[4223,4268,4306,4335,4364,4421,4471,4565,4631,4713,4746,4774,4816,4862,4905],{"title":4224,"icon":658,"path":4225,"stem":4226,"children":4227,"page":59},"Архітектура комп'ютерних мереж та мережеві протоколи","\u002Fweb-development\u002Fnetwork-architecture-and-protocols","18.web-development\u002F01.network-architecture-and-protocols",[4228,4232,4236,4240,4244,4248,4252,4256,4260,4264],{"title":4229,"path":4230,"stem":4231},"Еволюція веброзробки та модель клієнт-сервер","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fweb-evolution-client-server","18.web-development\u002F01.network-architecture-and-protocols\u002F01.web-evolution-client-server",{"title":4233,"path":4234,"stem":4235},"Еталонна модель OSI","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fosi-model","18.web-development\u002F01.network-architecture-and-protocols\u002F02.osi-model",{"title":4237,"path":4238,"stem":4239},"Стек протоколів TCP\u002FIP","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Ftcp-ip-stack","18.web-development\u002F01.network-architecture-and-protocols\u002F03.tcp-ip-stack",{"title":4241,"path":4242,"stem":4243},"IP-адресація, порти та сокети","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fip-addressing-ports-sockets","18.web-development\u002F01.network-architecture-and-protocols\u002F04.ip-addressing-ports-sockets",{"title":4245,"path":4246,"stem":4247},"Протоколи TCP та UDP","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Ftcp-udp-protocols","18.web-development\u002F01.network-architecture-and-protocols\u002F05.tcp-udp-protocols",{"title":4249,"path":4250,"stem":4251},"Система доменних імен DNS","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fdns-system","18.web-development\u002F01.network-architecture-and-protocols\u002F06.dns-system",{"title":4253,"path":4254,"stem":4255},"Протокол SMTP та поштові протоколи","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fsmtp-email-protocols","18.web-development\u002F01.network-architecture-and-protocols\u002F07.smtp-email-protocols",{"title":4257,"path":4258,"stem":4259},"Протокол WebSocket","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fwebsocket-protocol","18.web-development\u002F01.network-architecture-and-protocols\u002F08.websocket-protocol",{"title":4261,"path":4262,"stem":4263},"Протокол SSH","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fssh-protocol","18.web-development\u002F01.network-architecture-and-protocols\u002F09.ssh-protocol",{"title":4265,"path":4266,"stem":4267},"Огляд сучасних серверних технологій","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fmodern-backend-technologies","18.web-development\u002F01.network-architecture-and-protocols\u002F10.modern-backend-technologies",{"title":4269,"icon":4270,"path":4271,"stem":4272,"children":4273,"page":59},"Протокол HTTP та захищена передача даних HTTPS","i-lucide-lock","\u002Fweb-development\u002Fhttp-and-https","18.web-development\u002F02.http-and-https",[4274,4278,4282,4286,4290,4294,4298,4302],{"title":4275,"path":4276,"stem":4277},"Вступ до протоколу HTTP та еволюція веб-технологій","\u002Fweb-development\u002Fhttp-and-https\u002Fintroduction-and-evolution","18.web-development\u002F02.http-and-https\u002F01.introduction-and-evolution",{"title":4279,"path":4280,"stem":4281},"Анатомія HTTP-запиту","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-request-structure","18.web-development\u002F02.http-and-https\u002F02.http-request-structure",{"title":4283,"path":4284,"stem":4285},"Анатомія HTTP-відповіді","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-response-structure","18.web-development\u002F02.http-and-https\u002F03.http-response-structure",{"title":4287,"path":4288,"stem":4289},"Методи HTTP та їхня семантика","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-methods","18.web-development\u002F02.http-and-https\u002F04.http-methods",{"title":4291,"path":4292,"stem":4293},"Коди статусу HTTP та їхнє призначення","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-status-codes","18.web-development\u002F02.http-and-https\u002F05.http-status-codes",{"title":4295,"path":4296,"stem":4297},"HTTP-заголовки та їхнє призначення","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-headers","18.web-development\u002F02.http-and-https\u002F06.http-headers",{"title":4299,"path":4300,"stem":4301},"CORS та механізми безпеки HTTP","\u002Fweb-development\u002Fhttp-and-https\u002Fcors-and-security","18.web-development\u002F02.http-and-https\u002F07.cors-and-security",{"title":4303,"path":4304,"stem":4305},"HTTPS та криптографічні основи TLS","\u002Fweb-development\u002Fhttp-and-https\u002Fhttps-and-tls","18.web-development\u002F02.http-and-https\u002F08.https-and-tls",{"title":4307,"icon":2530,"path":4308,"stem":4309,"children":4310,"page":59},"Система типів мови TypeScript","\u002Fweb-development\u002Ftypescript-type-system","18.web-development\u002F03.typescript-type-system",[4311,4315,4319,4323,4327,4331],{"title":4312,"path":4313,"stem":4314},"Знайомство з TypeScript Compiler","\u002Fweb-development\u002Ftypescript-type-system\u002Fintroduction-compiler-config","18.web-development\u002F03.typescript-type-system\u002F01.introduction-compiler-config",{"title":4316,"path":4317,"stem":4318},"Примітивні типи даних: string, number, boolean","\u002Fweb-development\u002Ftypescript-type-system\u002Fprimitive-special-types","18.web-development\u002F03.typescript-type-system\u002F02.primitive-special-types",{"title":4320,"path":4321,"stem":4322},"Масиви, кортежі та об","\u002Fweb-development\u002Ftypescript-type-system\u002Farrays-tuples-objects","18.web-development\u002F03.typescript-type-system\u002F03.arrays-tuples-objects",{"title":4324,"path":4325,"stem":4326},"Псевдоніми типів, Union типи, Intersection типи та літеральні типи","\u002Fweb-development\u002Ftypescript-type-system\u002Funion-intersection-literals","18.web-development\u002F03.typescript-type-system\u002F04.union-intersection-literals",{"title":4328,"path":4329,"stem":4330},"Type Narrowing (звуження типів)","\u002Fweb-development\u002Ftypescript-type-system\u002Ftype-narrowing","18.web-development\u002F03.typescript-type-system\u002F05.type-narrowing",{"title":4332,"path":4333,"stem":4334},"Типізація функцій","\u002Fweb-development\u002Ftypescript-type-system\u002Ffunctions-typing","18.web-development\u002F03.typescript-type-system\u002F06.functions-typing",{"title":4336,"icon":2530,"path":4337,"stem":4338,"children":4339,"page":59},"Розширені засоби мови TypeScript","\u002Fweb-development\u002Ftypescript-advanced","18.web-development\u002F04.typescript-advanced",[4340,4344,4348,4352,4356,4360],{"title":4341,"path":4342,"stem":4343},"Interfaces та Classes","\u002Fweb-development\u002Ftypescript-advanced\u002Finterfaces-classes","18.web-development\u002F04.typescript-advanced\u002F01.interfaces-classes",{"title":4345,"path":4346,"stem":4347},"Основи Generic типів","\u002Fweb-development\u002Ftypescript-advanced\u002Fgenerics-fundamentals","18.web-development\u002F04.typescript-advanced\u002F02.generics-fundamentals",{"title":4349,"path":4350,"stem":4351},"Enums та Decorators","\u002Fweb-development\u002Ftypescript-advanced\u002Fenums-decorators","18.web-development\u002F04.typescript-advanced\u002F03.enums-decorators",{"title":4353,"path":4354,"stem":4355},"Utility Types","\u002Fweb-development\u002Ftypescript-advanced\u002Futility-types","18.web-development\u002F04.typescript-advanced\u002F04.utility-types",{"title":4357,"path":4358,"stem":4359},"Mapped та Conditional Types","\u002Fweb-development\u002Ftypescript-advanced\u002Fmapped-conditional-types","18.web-development\u002F04.typescript-advanced\u002F05.mapped-conditional-types",{"title":4361,"path":4362,"stem":4363},"Модулі та Strict Mode","\u002Fweb-development\u002Ftypescript-advanced\u002Fmodules-strict-mode","18.web-development\u002F04.typescript-advanced\u002F06.modules-strict-mode",{"title":4365,"icon":4366,"path":4367,"stem":4368,"children":4369,"page":59},"Платформа Node.js як середовище виконання","i-devicon-nodejs","\u002Fweb-development\u002Fnodejs-platform","18.web-development\u002F05.nodejs-platform",[4370,4374,4378,4382,4386,4390,4394,4398,4402,4406,4410,4413,4417],{"title":4371,"path":4372,"stem":4373},"Що таке Node.js та його архітектура","\u002Fweb-development\u002Fnodejs-platform\u002Fwhat-is-nodejs","18.web-development\u002F05.nodejs-platform\u002F01.what-is-nodejs",{"title":4375,"path":4376,"stem":4377},"Event Loop — серце Node.js","\u002Fweb-development\u002Fnodejs-platform\u002Fevent-loop","18.web-development\u002F05.nodejs-platform\u002F02.event-loop",{"title":4379,"path":4380,"stem":4381},"Модульні системи: CommonJS vs ES Modules","\u002Fweb-development\u002Fnodejs-platform\u002Fmodule-systems","18.web-development\u002F05.nodejs-platform\u002F03.module-systems",{"title":4383,"path":4384,"stem":4385},"npm та package.json","\u002Fweb-development\u002Fnodejs-platform\u002Fnpm-package-json","18.web-development\u002F05.nodejs-platform\u002F04.npm-package-json",{"title":4387,"path":4388,"stem":4389},"Глобальні об\\","\u002Fweb-development\u002Fnodejs-platform\u002Fglobal-objects","18.web-development\u002F05.nodejs-platform\u002F05.global-objects",{"title":4391,"path":4392,"stem":4393},"Вбудований модуль fs (File System)","\u002Fweb-development\u002Fnodejs-platform\u002Fbuilt-in-modules-fs","18.web-development\u002F05.nodejs-platform\u002F06.built-in-modules-fs",{"title":4395,"path":4396,"stem":4397},"Вбудований модуль path","\u002Fweb-development\u002Fnodejs-platform\u002Fbuilt-in-modules-path","18.web-development\u002F05.nodejs-platform\u002F07.built-in-modules-path",{"title":4399,"path":4400,"stem":4401},"Вбудований модуль http","\u002Fweb-development\u002Fnodejs-platform\u002Fbuilt-in-modules-http","18.web-development\u002F05.nodejs-platform\u002F08.built-in-modules-http",{"title":4403,"path":4404,"stem":4405},"Streams — потоки даних у Node.js","\u002Fweb-development\u002Fnodejs-platform\u002Fstreams","18.web-development\u002F05.nodejs-platform\u002F09.streams",{"title":4407,"path":4408,"stem":4409},"Вбудований модуль util (Utilities)","\u002Fweb-development\u002Fnodejs-platform\u002Fbuilt-in-modules-util","18.web-development\u002F05.nodejs-platform\u002F10.built-in-modules-util",{"title":3215,"path":4411,"stem":4412},"\u002Fweb-development\u002Fnodejs-platform\u002Fenvironment-variables","18.web-development\u002F05.nodejs-platform\u002F11.environment-variables",{"title":4414,"path":4415,"stem":4416},"Інструменти налагодження та розробки","\u002Fweb-development\u002Fnodejs-platform\u002Fdebugging-tools","18.web-development\u002F05.nodejs-platform\u002F12.debugging-tools",{"title":4418,"path":4419,"stem":4420},"Продуктивність та Best Practices","\u002Fweb-development\u002Fnodejs-platform\u002Fperformance-best-practices","18.web-development\u002F05.nodejs-platform\u002F13.performance-best-practices",{"title":4422,"icon":4423,"path":4424,"stem":4425,"children":4426,"page":59},"Асинхронне програмування у Node.js","i-lucide-clock","\u002Fweb-development\u002Fasync-programming-nodejs","18.web-development\u002F06.async-programming-nodejs",[4427,4431,4435,4439,4443,4447,4451,4455,4459,4463,4467],{"title":4428,"path":4429,"stem":4430},"Синхронний vs асинхронний код","\u002Fweb-development\u002Fasync-programming-nodejs\u002Fsync-vs-async","18.web-development\u002F06.async-programming-nodejs\u002F01.sync-vs-async",{"title":4432,"path":4433,"stem":4434},"Callbacks — перша парадигма асинхронності","\u002Fweb-development\u002Fasync-programming-nodejs\u002Fcallbacks","18.web-development\u002F06.async-programming-nodejs\u002F02.callbacks",{"title":4436,"path":4437,"stem":4438},"Promises — стандарт асинхронності","\u002Fweb-development\u002Fasync-programming-nodejs\u002Fpromises","18.web-development\u002F06.async-programming-nodejs\u002F03.promises",{"title":4440,"path":4441,"stem":4442},"Promise комбінатори","\u002Fweb-development\u002Fasync-programming-nodejs\u002Fpromise-combinators","18.web-development\u002F06.async-programming-nodejs\u002F04.promise-combinators",{"title":4444,"path":4445,"stem":4446},"Async\u002FAwait — синтаксичний цукор над Promises","\u002Fweb-development\u002Fasync-programming-nodejs\u002Fasync-await","18.web-development\u002F06.async-programming-nodejs\u002F05.async-await",{"title":4448,"path":4449,"stem":4450},"Паралельне vs послідовне виконання","\u002Fweb-development\u002Fasync-programming-nodejs\u002Fparallel-vs-sequential","18.web-development\u002F06.async-programming-nodejs\u002F06.parallel-vs-sequential",{"title":4452,"path":4453,"stem":4454},"EventEmitter — подієва модель Node.js","\u002Fweb-development\u002Fasync-programming-nodejs\u002Fevent-emitter","18.web-development\u002F06.async-programming-nodejs\u002F07.event-emitter",{"title":4456,"path":4457,"stem":4458},"Worker Threads — багатопотоковість у Node.js","\u002Fweb-development\u002Fasync-programming-nodejs\u002Fworker-threads","18.web-development\u002F06.async-programming-nodejs\u002F08.worker-threads",{"title":4460,"path":4461,"stem":4462},"Child Processes — запуск зовнішніх процесів","\u002Fweb-development\u002Fasync-programming-nodejs\u002Fchild-processes","18.web-development\u002F06.async-programming-nodejs\u002F09.child-processes",{"title":4464,"path":4465,"stem":4466},"Обробка помилок у асинхронному коді","\u002Fweb-development\u002Fasync-programming-nodejs\u002Ferror-handling","18.web-development\u002F06.async-programming-nodejs\u002F10.error-handling",{"title":4468,"path":4469,"stem":4470},"Порівняння Node.js фреймворків","\u002Fweb-development\u002Fasync-programming-nodejs\u002Fnodejs-frameworks","18.web-development\u002F06.async-programming-nodejs\u002F11.nodejs-frameworks",{"title":4472,"icon":4473,"path":4474,"stem":4475,"children":4476,"page":59},"Тема 7. Фреймворк NestJS. Контролери та маршрутизація","i-lucide-route","\u002Fweb-development\u002Fnestjs-controllers-routing","18.web-development\u002F07.nestjs-controllers-routing",[4477,4481,4485,4489,4493,4497,4501,4505,4509,4513,4517,4521,4525,4529,4533,4537,4541,4545,4549,4553,4557,4561],{"title":4478,"path":4479,"stem":4480},"Філософія та архітектура NestJS","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fnestjs-philosophy","18.web-development\u002F07.nestjs-controllers-routing\u002F01.nestjs-philosophy",{"title":4482,"path":4483,"stem":4484},"Три стовпи архітектури: модулі, контролери, провайдери","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fthree-pillars","18.web-development\u002F07.nestjs-controllers-routing\u002F02.three-pillars",{"title":4486,"path":4487,"stem":4488},"Інверсія керування (IoC) та ін","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fioc-and-di","18.web-development\u002F07.nestjs-controllers-routing\u002F03.ioc-and-di",{"title":4490,"path":4491,"stem":4492},"Встановлення NestJS CLI та створення проєкту","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fnestjs-cli-setup","18.web-development\u002F07.nestjs-controllers-routing\u002F04.nestjs-cli-setup",{"title":4494,"path":4495,"stem":4496},"Структура проєкту NestJS та конвенції","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fproject-structure","18.web-development\u002F07.nestjs-controllers-routing\u002F05.project-structure",{"title":4498,"path":4499,"stem":4500},"Контролери: основи маршрутизації","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fcontrollers-basics","18.web-development\u002F07.nestjs-controllers-routing\u002F06.controllers-basics",{"title":4502,"path":4503,"stem":4504},"Декоратори маршрутизації HTTP-методів","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Froute-decorators","18.web-development\u002F07.nestjs-controllers-routing\u002F07.route-decorators",{"title":4506,"path":4507,"stem":4508},"Параметри маршруту та декоратор @Param","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Froute-parameters","18.web-development\u002F07.nestjs-controllers-routing\u002F08.route-parameters",{"title":4510,"path":4511,"stem":4512},"Query-параметри та декоратор @Query","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fquery-parameters","18.web-development\u002F07.nestjs-controllers-routing\u002F09.query-parameters",{"title":4514,"path":4515,"stem":4516},"Тіло запиту та декоратор @Body","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Frequest-body","18.web-development\u002F07.nestjs-controllers-routing\u002F10.request-body",{"title":4518,"path":4519,"stem":4520},"Робота з заголовками запиту та відповіді","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fheaders-decorators","18.web-development\u002F07.nestjs-controllers-routing\u002F11.headers-decorators",{"title":4522,"path":4523,"stem":4524},"Data Transfer Objects (DTO): визначення та призначення","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fdto-introduction","18.web-development\u002F07.nestjs-controllers-routing\u002F12.dto-introduction",{"title":4526,"path":4527,"stem":4528},"Об'єкти Request та Response","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Frequest-response-objects","18.web-development\u002F07.nestjs-controllers-routing\u002F13.request-response-objects",{"title":4530,"path":4531,"stem":4532},"HTTP-статус коди та декоратор @HttpCode","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fhttp-status-codes","18.web-development\u002F07.nestjs-controllers-routing\u002F14.http-status-codes",{"title":4534,"path":4535,"stem":4536},"Перенаправлення (Redirects) та декоратор @Redirect","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fredirects","18.web-development\u002F07.nestjs-controllers-routing\u002F15.redirects",{"title":4538,"path":4539,"stem":4540},"Асинхронні обробники та Observables","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fasync-handlers","18.web-development\u002F07.nestjs-controllers-routing\u002F16.async-handlers",{"title":4542,"path":4543,"stem":4544},"Маршрутизація за піддоменами та версіонування API","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fsub-domain-routing","18.web-development\u002F07.nestjs-controllers-routing\u002F17.sub-domain-routing",{"title":4546,"path":4547,"stem":4548},"Області видимості контролерів (Scopes)","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fcontroller-scopes","18.web-development\u002F07.nestjs-controllers-routing\u002F18.controller-scopes",{"title":4550,"path":4551,"stem":4552},"Основні команди NestJS CLI","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fnestjs-cli-commands","18.web-development\u002F07.nestjs-controllers-routing\u002F19.nestjs-cli-commands",{"title":4554,"path":4555,"stem":4556},"Практичний приклад: створення CRUD-контролера","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fcrud-example","18.web-development\u002F07.nestjs-controllers-routing\u002F20.crud-example",{"title":4558,"path":4559,"stem":4560},"Тестування контролерів","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Ftesting-controllers","18.web-development\u002F07.nestjs-controllers-routing\u002F21.testing-controllers",{"title":4562,"path":4563,"stem":4564},"Best Practices для контролерів та маршрутизації","\u002Fweb-development\u002Fnestjs-controllers-routing\u002Fbest-practices","18.web-development\u002F07.nestjs-controllers-routing\u002F22.best-practices",{"title":4566,"icon":4567,"path":4568,"stem":4569,"children":4570,"page":59},"Тема 8. Провайдери, сервіси та модульна система NestJS","i-lucide-package","\u002Fweb-development\u002Fnestjs-providers-modules","18.web-development\u002F08.nestjs-providers-modules",[4571,4575,4579,4583,4587,4591,4595,4599,4603,4607,4611,4615,4619,4623,4627],{"title":4572,"path":4573,"stem":4574},"Концепція провайдерів у NestJS","\u002Fweb-development\u002Fnestjs-providers-modules\u002Fproviders-concept","18.web-development\u002F08.nestjs-providers-modules\u002F01.providers-concept",{"title":4576,"path":4577,"stem":4578},"Сервіси: інкапсуляція бізнес-логіки","\u002Fweb-development\u002Fnestjs-providers-modules\u002Fservices-business-logic","18.web-development\u002F08.nestjs-providers-modules\u002F02.services-business-logic",{"title":4580,"path":4581,"stem":4582},"Практика ін","\u002Fweb-development\u002Fnestjs-providers-modules\u002Fdependency-injection-practice","18.web-development\u002F08.nestjs-providers-modules\u002F03.dependency-injection-practice",{"title":4584,"path":4585,"stem":4586},"Custom Providers: useValue, useClass, useFactory, useExisting","\u002Fweb-development\u002Fnestjs-providers-modules\u002Fcustom-providers","18.web-development\u002F08.nestjs-providers-modules\u002F04.custom-providers",{"title":4588,"path":4589,"stem":4590},"Injection Tokens: рядкові та символьні токени","\u002Fweb-development\u002Fnestjs-providers-modules\u002Finjection-tokens","18.web-development\u002F08.nestjs-providers-modules\u002F05.injection-tokens",{"title":4592,"path":4593,"stem":4594},"Опціональні провайдери та декоратор @Optional","\u002Fweb-development\u002Fnestjs-providers-modules\u002Foptional-providers","18.web-development\u002F08.nestjs-providers-modules\u002F07.optional-providers",{"title":4596,"path":4597,"stem":4598},"Структура модулів: imports, controllers, providers, exports","\u002Fweb-development\u002Fnestjs-providers-modules\u002Fmodules-structure","18.web-development\u002F08.nestjs-providers-modules\u002F08.modules-structure",{"title":4600,"path":4601,"stem":4602},"Feature Modules: ізоляція функціональності","\u002Fweb-development\u002Fnestjs-providers-modules\u002Ffeature-modules","18.web-development\u002F08.nestjs-providers-modules\u002F09.feature-modules",{"title":4604,"path":4605,"stem":4606},"Shared Modules: перевикористання провайдерів","\u002Fweb-development\u002Fnestjs-providers-modules\u002Fshared-modules","18.web-development\u002F08.nestjs-providers-modules\u002F10.shared-modules",{"title":4608,"path":4609,"stem":4610},"Global Modules та декоратор @Global","\u002Fweb-development\u002Fnestjs-providers-modules\u002Fglobal-modules","18.web-development\u002F08.nestjs-providers-modules\u002F11.global-modules",{"title":4612,"path":4613,"stem":4614},"Dynamic Modules: конфігурація під час виконання","\u002Fweb-development\u002Fnestjs-providers-modules\u002Fdynamic-modules","18.web-development\u002F08.nestjs-providers-modules\u002F12.dynamic-modules",{"title":4616,"path":4617,"stem":4618},"Циклічні залежності та forwardRef","\u002Fweb-development\u002Fnestjs-providers-modules\u002Fcircular-dependencies","18.web-development\u002F08.nestjs-providers-modules\u002F13.circular-dependencies",{"title":4620,"path":4621,"stem":4622},"Lifecycle Hooks: хуки життєвого циклу","\u002Fweb-development\u002Fnestjs-providers-modules\u002Flifecycle-hooks","18.web-development\u002F08.nestjs-providers-modules\u002F14.lifecycle-hooks",{"title":4624,"path":4625,"stem":4626},"ModuleRef: динамічний доступ до провайдерів","\u002Fweb-development\u002Fnestjs-providers-modules\u002Fmodule-reference","18.web-development\u002F08.nestjs-providers-modules\u002F15.module-reference",{"title":4628,"path":4629,"stem":4630},"Тестування сервісів та провайдерів","\u002Fweb-development\u002Fnestjs-providers-modules\u002Ftesting-services","18.web-development\u002F08.nestjs-providers-modules\u002F16.testing-services",{"title":4632,"icon":4633,"path":4634,"stem":4635,"children":4636,"page":59},"Тема 9. Валідація даних та конвеєр обробки запитів у NestJS","i-lucide-filter","\u002Fweb-development\u002Fnestjs-validation-pipeline","18.web-development\u002F09.nestjs-validation-pipeline",[4637,4641,4645,4649,4653,4657,4661,4665,4669,4673,4677,4681,4685,4689,4693,4697,4701,4705,4709],{"title":4638,"path":4639,"stem":4640},"Request Pipeline: конвеєр обробки запитів","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Frequest-pipeline","18.web-development\u002F09.nestjs-validation-pipeline\u002F01.request-pipeline",{"title":4642,"path":4643,"stem":4644},"Pipes: концепція трансформації та валідації","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fpipes-concept","18.web-development\u002F09.nestjs-validation-pipeline\u002F02.pipes-concept",{"title":4646,"path":4647,"stem":4648},"Вбудовані pipes: ParseIntPipe, ParseBoolPipe, ParseUUIDPipe","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fbuilt-in-pipes","18.web-development\u002F09.nestjs-validation-pipeline\u002F03.built-in-pipes",{"title":4650,"path":4651,"stem":4652},"ValidationPipe: автоматична валідація DTO","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fvalidation-pipe","18.web-development\u002F09.nestjs-validation-pipeline\u002F04.validation-pipe",{"title":4654,"path":4655,"stem":4656},"Декоратори class-validator для DTO","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fclass-validator-decorators","18.web-development\u002F09.nestjs-validation-pipeline\u002F05.class-validator-decorators",{"title":4658,"path":4659,"stem":4660},"Створення кастомних валідаторів","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fcustom-validators","18.web-development\u002F09.nestjs-validation-pipeline\u002F06.custom-validators",{"title":4662,"path":4663,"stem":4664},"Створення власних Pipes","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fcustom-pipes","18.web-development\u002F09.nestjs-validation-pipeline\u002F07.custom-pipes",{"title":4666,"path":4667,"stem":4668},"Основи Middleware","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fmiddleware-basics","18.web-development\u002F09.nestjs-validation-pipeline\u002F08.middleware-basics",{"title":4670,"path":4671,"stem":4672},"Практичні приклади Middleware","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fmiddleware-examples","18.web-development\u002F09.nestjs-validation-pipeline\u002F09.middleware-examples",{"title":4674,"path":4675,"stem":4676},"Guards: захисні перехоплювачі доступу","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fguards-concept","18.web-development\u002F09.nestjs-validation-pipeline\u002F10.guards-concept",{"title":4678,"path":4679,"stem":4680},"Створення кастомних Guards","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fcustom-guards","18.web-development\u002F09.nestjs-validation-pipeline\u002F11.custom-guards",{"title":4682,"path":4683,"stem":4684},"Interceptors: перехоплення та трансформація відповідей","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Finterceptors-concept","18.web-development\u002F09.nestjs-validation-pipeline\u002F12.interceptors-concept",{"title":4686,"path":4687,"stem":4688},"Практичні приклади Interceptors","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Finterceptor-examples","18.web-development\u002F09.nestjs-validation-pipeline\u002F13.interceptor-examples",{"title":4690,"path":4691,"stem":4692},"Exception Filters: обробка виключень","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fexception-filters","18.web-development\u002F09.nestjs-validation-pipeline\u002F14.exception-filters",{"title":4694,"path":4695,"stem":4696},"Custom Exception Filters: спеціалізовані фільтри","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fcustom-exception-filters","18.web-development\u002F09.nestjs-validation-pipeline\u002F15.custom-exception-filters",{"title":4698,"path":4699,"stem":4700},"Execution Context: контекст виконання","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fexecution-context","18.web-development\u002F09.nestjs-validation-pipeline\u002F16.execution-context",{"title":4702,"path":4703,"stem":4704},"Custom Decorators: власні декоратори","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fcustom-decorators","18.web-development\u002F09.nestjs-validation-pipeline\u002F17.custom-decorators",{"title":4706,"path":4707,"stem":4708},"Global Components: глобальні компоненти","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fglobal-components","18.web-development\u002F09.nestjs-validation-pipeline\u002F18.global-components",{"title":4710,"path":4711,"stem":4712},"Pipeline Best Practices: найкращі практики","\u002Fweb-development\u002Fnestjs-validation-pipeline\u002Fpipeline-best-practices","18.web-development\u002F09.nestjs-validation-pipeline\u002F19.pipeline-best-practices",{"title":4714,"icon":2939,"path":4715,"stem":4716,"children":4717,"page":59},"Інтеграція реляційних баз даних засобами TypeORM","\u002Fweb-development\u002Ftypeorm-integration","18.web-development\u002F10.typeorm-integration",[4718,4722,4726,4730,4734,4738,4742],{"title":4719,"path":4720,"stem":4721},"Робота з базами даних у Node.js через нативні драйвери","\u002Fweb-development\u002Ftypeorm-integration\u002F01-nodejs-database-drivers","18.web-development\u002F10.typeorm-integration\u002F01-nodejs-database-drivers",{"title":4723,"path":4724,"stem":4725},"ORM та знайомство з TypeORM","\u002Fweb-development\u002Ftypeorm-integration\u002F02-orm-and-typeorm-intro","18.web-development\u002F10.typeorm-integration\u002F02-orm-and-typeorm-intro",{"title":4727,"path":4728,"stem":4729},"Налаштування TypeORM у NestJS проєкті","\u002Fweb-development\u002Ftypeorm-integration\u002F03-typeorm-setup-nestjs","18.web-development\u002F10.typeorm-integration\u002F03-typeorm-setup-nestjs",{"title":4731,"path":4732,"stem":4733},"Entity класи та декоратори TypeORM","\u002Fweb-development\u002Ftypeorm-integration\u002F04-entities-and-decorators","18.web-development\u002F10.typeorm-integration\u002F04-entities-and-decorators",{"title":4735,"path":4736,"stem":4737},"Repository Pattern та CRUD операції","\u002Fweb-development\u002Ftypeorm-integration\u002F05-repository-pattern-crud","18.web-development\u002F10.typeorm-integration\u002F05-repository-pattern-crud",{"title":4739,"path":4740,"stem":4741},"Пагінація та фільтрація даних","\u002Fweb-development\u002Ftypeorm-integration\u002F06-pagination-filtering","18.web-development\u002F10.typeorm-integration\u002F06-pagination-filtering",{"title":4743,"path":4744,"stem":4745},"QueryBuilder для складних запитів","\u002Fweb-development\u002Ftypeorm-integration\u002F07-query-builder","18.web-development\u002F10.typeorm-integration\u002F07-query-builder",{"title":4747,"icon":4748,"path":4749,"stem":4750,"children":4751,"page":59},"Зв'язки між сутностями, міграції та оптимізація запитів","i-lucide-git-branch","\u002Fweb-development\u002Fentity-relations-migrations","18.web-development\u002F11.entity-relations-migrations",[4752,4756,4760,4764,4768],{"title":4753,"path":4754,"stem":4755},"Зв'язки One-to-Many та Many-to-One","\u002Fweb-development\u002Fentity-relations-migrations\u002F01-one-to-many-many-to-one","18.web-development\u002F11.entity-relations-migrations\u002F01-one-to-many-many-to-one",{"title":4757,"path":4758,"stem":4759},"Зв'язки One-to-One та Many-to-Many","\u002Fweb-development\u002Fentity-relations-migrations\u002F02-one-to-one-many-to-many","18.web-development\u002F11.entity-relations-migrations\u002F02-one-to-one-many-to-many",{"title":4761,"path":4762,"stem":4763},"Керування міграціями бази даних","\u002Fweb-development\u002Fentity-relations-migrations\u002F03-migrations-management","18.web-development\u002F11.entity-relations-migrations\u002F03-migrations-management",{"title":4765,"path":4766,"stem":4767},"Транзакції у TypeORM","\u002Fweb-development\u002Fentity-relations-migrations\u002F04-transactions","18.web-development\u002F11.entity-relations-migrations\u002F04-transactions",{"title":4769,"path":4770,"stem":4771,"children":4772},"Індекси та оптимізація запитів","\u002Fweb-development\u002Fentity-relations-migrations\u002F05-indexes-optimization","18.web-development\u002F11.entity-relations-migrations\u002F05-indexes-optimization",[4773],{"title":4769,"path":4770,"stem":4771},{"title":4775,"icon":4776,"path":4777,"stem":4778,"children":4779,"page":59},"Механізми автентифікації у вебзастосунках","i-lucide-key","\u002Fweb-development\u002Fauthentication","18.web-development\u002F12.authentication",[4780,4784,4788,4792,4796,4800,4804,4808,4812],{"title":4781,"path":4782,"stem":4783},"Автентифікація vs Авторизація","\u002Fweb-development\u002Fauthentication\u002F01-authentication-vs-authorization","18.web-development\u002F12.authentication\u002F01-authentication-vs-authorization",{"title":4785,"path":4786,"stem":4787},"Стратегії автентифікації","\u002Fweb-development\u002Fauthentication\u002F02-authentication-strategies","18.web-development\u002F12.authentication\u002F02-authentication-strategies",{"title":4789,"path":4790,"stem":4791},"Автентифікація на основі сесій","\u002Fweb-development\u002Fauthentication\u002F03-session-based-authentication","18.web-development\u002F12.authentication\u002F03-session-based-authentication",{"title":4793,"path":4794,"stem":4795},"Структура JSON Web Token (JWT)","\u002Fweb-development\u002Fauthentication\u002F04-jwt-structure","18.web-development\u002F12.authentication\u002F04-jwt-structure",{"title":4797,"path":4798,"stem":4799},"Інтеграція JWT у NestJS","\u002Fweb-development\u002Fauthentication\u002F05-nestjs-jwt-integration","18.web-development\u002F12.authentication\u002F05-nestjs-jwt-integration",{"title":4801,"path":4802,"stem":4803},"Passport.js стратегії у NestJS","\u002Fweb-development\u002Fauthentication\u002F06-passport-strategies","18.web-development\u002F12.authentication\u002F06-passport-strategies",{"title":4805,"path":4806,"stem":4807},"Безпечне зберігання паролів: хешування та криптографічний захист","\u002Fweb-development\u002Fauthentication\u002F07-password-hashing","18.web-development\u002F12.authentication\u002F07-password-hashing",{"title":4809,"path":4810,"stem":4811},"Refresh Token та безпечне оновлення доступу","\u002Fweb-development\u002Fauthentication\u002F08-refresh-tokens","18.web-development\u002F12.authentication\u002F08-refresh-tokens",{"title":4813,"path":4814,"stem":4815},"OAuth 2.0 та OpenID Connect: делегована автентифікація","\u002Fweb-development\u002Fauthentication\u002F09-oauth2-openid","18.web-development\u002F12.authentication\u002F09-oauth2-openid",{"title":4817,"icon":4818,"path":4819,"stem":4820,"children":4821,"page":59},"Авторизація та безпека серверних застосунків","i-lucide-shield","\u002Fweb-development\u002Fauthorization-security","18.web-development\u002F13.authorization-security",[4822,4826,4830,4834,4838,4842,4846,4850,4854,4858],{"title":4823,"path":4824,"stem":4825},"Моделі авторизації","\u002Fweb-development\u002Fauthorization-security\u002F01-authorization-models","18.web-development\u002F13.authorization-security\u002F01-authorization-models",{"title":4827,"path":4828,"stem":4829},"Реалізація RBAC у NestJS","\u002Fweb-development\u002Fauthorization-security\u002F02-rbac-implementation","18.web-development\u002F13.authorization-security\u002F02-rbac-implementation",{"title":4831,"path":4832,"stem":4833},"Permission-Based Access Control","\u002Fweb-development\u002Fauthorization-security\u002F03-permission-based-access","18.web-development\u002F13.authorization-security\u002F03-permission-based-access",{"title":4835,"path":4836,"stem":4837},"ABAC та бібліотека CASL","\u002Fweb-development\u002Fauthorization-security\u002F04-abac-casl","18.web-development\u002F13.authorization-security\u002F04-abac-casl",{"title":4839,"path":4840,"stem":4841},"Кастомні декоратори та метадані","\u002Fweb-development\u002Fauthorization-security\u002F05-custom-decorators-metadata","18.web-development\u002F13.authorization-security\u002F05-custom-decorators-metadata",{"title":4843,"path":4844,"stem":4845},"Конфігурація CORS","\u002Fweb-development\u002Fauthorization-security\u002F06-cors-configuration","18.web-development\u002F13.authorization-security\u002F06-cors-configuration",{"title":4847,"path":4848,"stem":4849},"Захист через HTTP Security Headers (Helmet)","\u002Fweb-development\u002Fauthorization-security\u002F07-helmet-security-headers","18.web-development\u002F13.authorization-security\u002F07-helmet-security-headers",{"title":4851,"path":4852,"stem":4853},"Rate Limiting та Throttling","\u002Fweb-development\u002Fauthorization-security\u002F08-rate-limiting-throttling","18.web-development\u002F13.authorization-security\u002F08-rate-limiting-throttling",{"title":4855,"path":4856,"stem":4857},"Захист від поширених атак","\u002Fweb-development\u002Fauthorization-security\u002F09-common-attacks-protection","18.web-development\u002F13.authorization-security\u002F09-common-attacks-protection",{"title":4859,"path":4860,"stem":4861},"HTTPS у продакшені","\u002Fweb-development\u002Fauthorization-security\u002F10-https-production","18.web-development\u002F13.authorization-security\u002F10-https-production",{"title":4863,"icon":871,"path":4864,"stem":4865,"children":4866,"page":59},"Комунікація у реальному часі, нотифікації та фонові задачі","\u002Fweb-development\u002Frealtime-notifications-jobs","18.web-development\u002F14.realtime-notifications-jobs",[4867,4871,4875,4879,4883,4887,4890,4893,4897,4901],{"title":4868,"path":4869,"stem":4870},"Методи комунікації у реальному часі","\u002Fweb-development\u002Frealtime-notifications-jobs\u002F01-realtime-communication-methods","18.web-development\u002F14.realtime-notifications-jobs\u002F01-realtime-communication-methods",{"title":4872,"path":4873,"stem":4874},"WebSocket Gateway у NestJS","\u002Fweb-development\u002Frealtime-notifications-jobs\u002F02-websocket-gateway","18.web-development\u002F14.realtime-notifications-jobs\u002F02-websocket-gateway",{"title":4876,"path":4877,"stem":4878},"Lifecycle та Rooms у WebSocket","\u002Fweb-development\u002Frealtime-notifications-jobs\u002F03-websocket-lifecycle-rooms","18.web-development\u002F14.realtime-notifications-jobs\u002F03-websocket-lifecycle-rooms",{"title":4880,"path":4881,"stem":4882},"Server-Sent Events (SSE)","\u002Fweb-development\u002Frealtime-notifications-jobs\u002F04-server-sent-events","18.web-development\u002F14.realtime-notifications-jobs\u002F04-server-sent-events",{"title":4884,"path":4885,"stem":4886},"Архітектура системи нотифікацій","\u002Fweb-development\u002Frealtime-notifications-jobs\u002F05-notification-system","18.web-development\u002F14.realtime-notifications-jobs\u002F05-notification-system",{"title":904,"path":4888,"stem":4889},"\u002Fweb-development\u002Frealtime-notifications-jobs\u002F06-email-notifications","18.web-development\u002F14.realtime-notifications-jobs\u002F06-email-notifications",{"title":900,"path":4891,"stem":4892},"\u002Fweb-development\u002Frealtime-notifications-jobs\u002F07-web-push-notifications","18.web-development\u002F14.realtime-notifications-jobs\u002F07-web-push-notifications",{"title":4894,"path":4895,"stem":4896},"Фонові задачі та черги","\u002Fweb-development\u002Frealtime-notifications-jobs\u002F08-background-jobs-queues","18.web-development\u002F14.realtime-notifications-jobs\u002F08-background-jobs-queues",{"title":4898,"path":4899,"stem":4900},"Планувальники та Cron jobs","\u002Fweb-development\u002Frealtime-notifications-jobs\u002F09-schedulers-cron","18.web-development\u002F14.realtime-notifications-jobs\u002F09-schedulers-cron",{"title":4902,"path":4903,"stem":4904},"Практичні сценарії застосування","\u002Fweb-development\u002Frealtime-notifications-jobs\u002F10-practical-scenarios","18.web-development\u002F14.realtime-notifications-jobs\u002F10-practical-scenarios",{"title":4906,"icon":4907,"path":4908,"stem":4909,"children":4910,"page":59},"Тестування, документування та розгортання застосунків","i-lucide-rocket","\u002Fweb-development\u002Ftesting-documentation-deployment","18.web-development\u002F15.testing-documentation-deployment",[4911,4915,4919,4923,4927,4931,4935,4939,4943,4947],{"title":4912,"path":4913,"stem":4914},"Піраміда тестування та стратегія","\u002Fweb-development\u002Ftesting-documentation-deployment\u002F01-testing-pyramid-strategy","18.web-development\u002F15.testing-documentation-deployment\u002F01-testing-pyramid-strategy",{"title":4916,"path":4917,"stem":4918},"Основи Jest у NestJS","\u002Fweb-development\u002Ftesting-documentation-deployment\u002F02-jest-nestjs-basics","18.web-development\u002F15.testing-documentation-deployment\u002F02-jest-nestjs-basics",{"title":4920,"path":4921,"stem":4922},"Unit-тестування сервісів","\u002Fweb-development\u002Ftesting-documentation-deployment\u002F03-unit-testing-services","18.web-development\u002F15.testing-documentation-deployment\u002F03-unit-testing-services",{"title":4924,"path":4925,"stem":4926},"E2E тестування та покриття коду","\u002Fweb-development\u002Ftesting-documentation-deployment\u002F04-e2e-testing-coverage","18.web-development\u002F15.testing-documentation-deployment\u002F04-e2e-testing-coverage",{"title":4928,"path":4929,"stem":4930},"Swagger, OpenAPI, Scalar та Arazzo","\u002Fweb-development\u002Ftesting-documentation-deployment\u002F05-swagger-openapi","18.web-development\u002F15.testing-documentation-deployment\u002F05-swagger-openapi",{"title":4932,"path":4933,"stem":4934},"Керування конфігурацією","\u002Fweb-development\u002Ftesting-documentation-deployment\u002F06-configuration-management","18.web-development\u002F15.testing-documentation-deployment\u002F06-configuration-management",{"title":4936,"path":4937,"stem":4938},"Docker та контейнеризація","\u002Fweb-development\u002Ftesting-documentation-deployment\u002F07-docker-containerization","18.web-development\u002F15.testing-documentation-deployment\u002F07-docker-containerization",{"title":4940,"path":4941,"stem":4942},"CI\u002FCD Pipelines","\u002Fweb-development\u002Ftesting-documentation-deployment\u002F08-cicd-pipelines","18.web-development\u002F15.testing-documentation-deployment\u002F08-cicd-pipelines",{"title":4944,"path":4945,"stem":4946},"Логування та моніторинг","\u002Fweb-development\u002Ftesting-documentation-deployment\u002F09-logging-monitoring","18.web-development\u002F15.testing-documentation-deployment\u002F09-logging-monitoring",{"title":4948,"path":4949,"stem":4950},"Серіалізація та компресія","\u002Fweb-development\u002Ftesting-documentation-deployment\u002F10-serialization-compression","18.web-development\u002F15.testing-documentation-deployment\u002F10-serialization-compression",{"title":4952,"icon":4953,"path":4954,"stem":4955,"children":4956,"page":59},"AI Core: мислення AI","i-lucide-brain","\u002Fai-core","19.ai-core",[4957,4998,5047,5085],{"title":4958,"icon":4907,"path":4959,"stem":4960,"children":4961,"page":59},"Вхід у професію AI Native Developer","\u002Fai-core\u002Fai-native-developer","19.ai-core\u002F01.ai-native-developer",[4962,4966,4970,4974,4978,4982,4986,4990,4994],{"title":4963,"path":4964,"stem":4965},"Вступ до професії розробника цифрових продуктів","\u002Fai-core\u002Fai-native-developer\u002Fdigital-products","19.ai-core\u002F01.ai-native-developer\u002F01.digital-products",{"title":4967,"path":4968,"stem":4969},"Професія розробника програмного забезпечення","\u002Fai-core\u002Fai-native-developer\u002Fsoftware-developer","19.ai-core\u002F01.ai-native-developer\u002F02.software-developer",{"title":4971,"path":4972,"stem":4973},"Професія AI Native Developer","\u002Fai-core\u002Fai-native-developer\u002Fai-native-developer","19.ai-core\u002F01.ai-native-developer\u002F03.ai-native-developer",{"title":4975,"path":4976,"stem":4977},"Вплив AI на розробку програмного забезпечення","\u002Fai-core\u002Fai-native-developer\u002Fai-impact-on-development","19.ai-core\u002F01.ai-native-developer\u002F04.ai-impact-on-development",{"title":4979,"path":4980,"stem":4981},"Життєвий цикл цифрового продукту","\u002Fai-core\u002Fai-native-developer\u002Fproduct-lifecycle","19.ai-core\u002F01.ai-native-developer\u002F05.product-lifecycle",{"title":4983,"path":4984,"stem":4985},"Застосування AI на етапах створення цифрового продукту","\u002Fai-core\u002Fai-native-developer\u002Fai-in-product-creation","19.ai-core\u002F01.ai-native-developer\u002F06.ai-in-product-creation",{"title":4987,"path":4988,"stem":4989},"Розподіл завдань між людиною та AI","\u002Fai-core\u002Fai-native-developer\u002Fhuman-vs-ai-tasks","19.ai-core\u002F01.ai-native-developer\u002F07.human-vs-ai-tasks",{"title":4991,"path":4992,"stem":4993},"Компетенції AI Native Developer","\u002Fai-core\u002Fai-native-developer\u002Fcompetencies","19.ai-core\u002F01.ai-native-developer\u002F08.competencies",{"title":4995,"path":4996,"stem":4997},"Карта професійного розвитку AI Native Developer","\u002Fai-core\u002Fai-native-developer\u002Fcareer-roadmap","19.ai-core\u002F01.ai-native-developer\u002F09.career-roadmap",{"title":4999,"icon":255,"path":5000,"stem":5001,"children":5002,"page":59},"Штучний інтелект і машинне навчання","\u002Fai-core\u002Fai-and-machine-learning","19.ai-core\u002F02.ai-and-machine-learning",[5003,5007,5011,5015,5019,5023,5027,5031,5035,5039,5043],{"title":5004,"path":5005,"stem":5006},"Штучний інтелект","\u002Fai-core\u002Fai-and-machine-learning\u002Fwhat-is-ai","19.ai-core\u002F02.ai-and-machine-learning\u002F01.what-is-ai",{"title":5008,"path":5009,"stem":5010},"Відмінність AI від інших програмних систем","\u002Fai-core\u002Fai-and-machine-learning\u002Fai-vs-automation","19.ai-core\u002F02.ai-and-machine-learning\u002F02.ai-vs-automation",{"title":5012,"path":5013,"stem":5014},"Завдання штучного інтелекту","\u002Fai-core\u002Fai-and-machine-learning\u002Fai-tasks","19.ai-core\u002F02.ai-and-machine-learning\u002F03.ai-tasks",{"title":5016,"path":5017,"stem":5018},"Machine Learning","\u002Fai-core\u002Fai-and-machine-learning\u002Fmachine-learning","19.ai-core\u002F02.ai-and-machine-learning\u002F04.machine-learning",{"title":5020,"path":5021,"stem":5022},"Machine Learning Workflow","\u002Fai-core\u002Fai-and-machine-learning\u002Fml-workflow","19.ai-core\u002F02.ai-and-machine-learning\u002F05.ml-workflow",{"title":5024,"path":5025,"stem":5026},"Типи машинного навчання","\u002Fai-core\u002Fai-and-machine-learning\u002Fml-types","19.ai-core\u002F02.ai-and-machine-learning\u002F06.ml-types",{"title":5028,"path":5029,"stem":5030},"Generative AI","\u002Fai-core\u002Fai-and-machine-learning\u002Fgenerative-ai","19.ai-core\u002F02.ai-and-machine-learning\u002F07.generative-ai",{"title":5032,"path":5033,"stem":5034},"Типи контенту, створюваного AI","\u002Fai-core\u002Fai-and-machine-learning\u002Fai-content-types","19.ai-core\u002F02.ai-and-machine-learning\u002F08.ai-content-types",{"title":5036,"path":5037,"stem":5038},"Великі мовні моделі","\u002Fai-core\u002Fai-and-machine-learning\u002Flarge-language-models","19.ai-core\u002F02.ai-and-machine-learning\u002F09.large-language-models",{"title":5040,"path":5041,"stem":5042},"Можливості та обмеження Generative AI","\u002Fai-core\u002Fai-and-machine-learning\u002Fcapabilities-and-limitations","19.ai-core\u002F02.ai-and-machine-learning\u002F10.capabilities-and-limitations",{"title":5044,"path":5045,"stem":5046},"Сучасні AI-асистенти","\u002Fai-core\u002Fai-and-machine-learning\u002Fmodern-ai-assistants","19.ai-core\u002F02.ai-and-machine-learning\u002F11.modern-ai-assistants",{"title":5048,"icon":5049,"path":5050,"stem":5051,"children":5052,"page":59},"Постановка завдань для AI: принципи створення промптів","i-lucide-message-square-text","\u002Fai-core\u002Fprompt-engineering","19.ai-core\u002F03.prompt-engineering",[5053,5057,5061,5065,5069,5073,5077,5081],{"title":5054,"path":5055,"stem":5056},"Промпт як інструмент","\u002Fai-core\u002Fprompt-engineering\u002Fprompt-as-tool","19.ai-core\u002F03.prompt-engineering\u002F01.prompt-as-tool",{"title":5058,"path":5059,"stem":5060},"Принципи створення промптів","\u002Fai-core\u002Fprompt-engineering\u002Fprompt-principles","19.ai-core\u002F03.prompt-engineering\u002F02.prompt-principles",{"title":5062,"path":5063,"stem":5064},"Структура промпта","\u002Fai-core\u002Fprompt-engineering\u002Fprompt-structure","19.ai-core\u002F03.prompt-engineering\u002F03.prompt-structure",{"title":5066,"path":5067,"stem":5068},"Види промптів за типом задачі","\u002Fai-core\u002Fprompt-engineering\u002Fprompt-types","19.ai-core\u002F03.prompt-engineering\u002F04.prompt-types",{"title":5070,"path":5071,"stem":5072},"Прийоми посилення промпта","\u002Fai-core\u002Fprompt-engineering\u002Fprompt-enhancement","19.ai-core\u002F03.prompt-engineering\u002F05.prompt-enhancement",{"title":5074,"path":5075,"stem":5076},"Розбір і покращення промпта","\u002Fai-core\u002Fprompt-engineering\u002Fprompt-analysis","19.ai-core\u002F03.prompt-engineering\u002F06.prompt-analysis",{"title":5078,"path":5079,"stem":5080},"Типові помилки під час створення промптів","\u002Fai-core\u002Fprompt-engineering\u002Fcommon-mistakes","19.ai-core\u002F03.prompt-engineering\u002F07.common-mistakes",{"title":5082,"path":5083,"stem":5084},"Практикум: особиста бібліотека промптів","\u002Fai-core\u002Fprompt-engineering\u002Fprompt-library","19.ai-core\u002F03.prompt-engineering\u002F08.prompt-library",{"title":5086,"icon":793,"path":5087,"stem":5088,"children":5089,"page":59},"Перевірка результатів, безпека та AI Native Workflow","\u002Fai-core\u002Fverification-security-workflow","19.ai-core\u002F04.verification-security-workflow",[5090,5094,5098,5102,5106,5110,5114,5118,5122],{"title":5091,"path":5092,"stem":5093},"Межі можливостей AI","\u002Fai-core\u002Fverification-security-workflow\u002Fai-limitations","19.ai-core\u002F04.verification-security-workflow\u002F01.ai-limitations",{"title":5095,"path":5096,"stem":5097},"Галюцинації AI","\u002Fai-core\u002Fverification-security-workflow\u002Fai-hallucinations","19.ai-core\u002F04.verification-security-workflow\u002F02.ai-hallucinations",{"title":5099,"path":5100,"stem":5101},"Критичне мислення під час роботи з AI","\u002Fai-core\u002Fverification-security-workflow\u002Fcritical-thinking","19.ai-core\u002F04.verification-security-workflow\u002F03.critical-thinking",{"title":5103,"path":5104,"stem":5105},"Перевірка результатів роботи AI","\u002Fai-core\u002Fverification-security-workflow\u002Fresult-verification","19.ai-core\u002F04.verification-security-workflow\u002F04.result-verification",{"title":5107,"path":5108,"stem":5109},"Захист даних під час роботи з AI","\u002Fai-core\u002Fverification-security-workflow\u002Fdata-protection","19.ai-core\u002F04.verification-security-workflow\u002F05.data-protection",{"title":5111,"path":5112,"stem":5113},"Авторське право та навчальна доброчесність","\u002Fai-core\u002Fverification-security-workflow\u002Fcopyright-integrity","19.ai-core\u002F04.verification-security-workflow\u002F06.copyright-integrity",{"title":5115,"path":5116,"stem":5117},"Відповідальне використання AI","\u002Fai-core\u002Fverification-security-workflow\u002Fresponsible-use","19.ai-core\u002F04.verification-security-workflow\u002F07.responsible-use",{"title":5119,"path":5120,"stem":5121},"AI Native Workflow","\u002Fai-core\u002Fverification-security-workflow\u002Fai-native-workflow","19.ai-core\u002F04.verification-security-workflow\u002F08.ai-native-workflow",{"title":5123,"path":5124,"stem":5125},"Застосування AI Native Workflow під час створення цифрового продукту","\u002Fai-core\u002Fverification-security-workflow\u002Fworkflow-in-practice","19.ai-core\u002F04.verification-security-workflow\u002F09.workflow-in-practice",{"title":5127,"icon":5128,"path":5129,"stem":5130,"children":5131,"page":59},"AI Developer: Vibe Coding Sprint","i-lucide-code-xml","\u002Fai-developer","20.ai-developer",[5132,5158,5180,5201],{"title":5133,"icon":5134,"path":5135,"stem":5136,"children":5137,"page":59},"Проєктування і чорнова версія","i-lucide-pencil-ruler","\u002Fai-developer\u002Fdraft-creation","20.ai-developer\u002F01.draft-creation",[5138,5142,5146,5150,5154],{"title":5139,"path":5140,"stem":5141},"Парадигма Vibe Coding Workflow","\u002Fai-developer\u002Fdraft-creation\u002Fvibe-coding-workflow","20.ai-developer\u002F01.draft-creation\u002F01.vibe-coding-workflow",{"title":5143,"path":5144,"stem":5145},"AI-середовище швидкої розробки","\u002Fai-developer\u002Fdraft-creation\u002Fai-ide-environment","20.ai-developer\u002F01.draft-creation\u002F02.ai-ide-environment",{"title":5147,"path":5148,"stem":5149},"Користувацьке завдання та межі першої версії","\u002Fai-developer\u002Fdraft-creation\u002Fproduct-scope-and-mvp","20.ai-developer\u002F01.draft-creation\u002F03.product-scope-and-mvp",{"title":5151,"path":5152,"stem":5153},"Архітектура інтерфейсу та стани застосунку","\u002Fai-developer\u002Fdraft-creation\u002Fapplication-architecture-and-states","20.ai-developer\u002F01.draft-creation\u002F04.application-architecture-and-states",{"title":5155,"path":5156,"stem":5157},"Генерація та фіксація чорнової версії","\u002Fai-developer\u002Fdraft-creation\u002Fgenerating-draft-version","20.ai-developer\u002F01.draft-creation\u002F05.generating-draft-version",{"title":5159,"icon":5160,"path":5161,"stem":5162,"children":5163,"page":59},"Перша робоча версія","i-lucide-play-circle","\u002Fai-developer\u002Ffirst-working-version","20.ai-developer\u002F02.first-working-version",[5164,5168,5172,5176],{"title":5165,"path":5166,"stem":5167},"Уточнення контексту проєкту для AI","\u002Fai-developer\u002Ffirst-working-version\u002Frefining-project-context","20.ai-developer\u002F02.first-working-version\u002F01.refining-project-context",{"title":5169,"path":5170,"stem":5171},"Стратегія завдань для AI-розробки","\u002Fai-developer\u002Ffirst-working-version\u002Fai-prompting-strategy","20.ai-developer\u002F02.first-working-version\u002F02.ai-prompting-strategy",{"title":5173,"path":5174,"stem":5175},"Доопрацювання до першої робочої версії","\u002Fai-developer\u002Ffirst-working-version\u002Frefining-to-working-version","20.ai-developer\u002F02.first-working-version\u002F03.refining-to-working-version",{"title":5177,"path":5178,"stem":5179},"Перевірка першої робочої версії","\u002Fai-developer\u002Ffirst-working-version\u002Ftesting-first-working-version","20.ai-developer\u002F02.first-working-version\u002F04.testing-first-working-version",{"title":5181,"icon":3146,"path":5182,"stem":5183,"children":5184,"page":59},"Ітерації, дебагінг та відновлення","\u002Fai-developer\u002Fiteration-debugging-recovery","20.ai-developer\u002F03.iteration-debugging-recovery",[5185,5189,5193,5197],{"title":5186,"path":5187,"stem":5188},"Управління точковими змінами продукту","\u002Fai-developer\u002Fiteration-debugging-recovery\u002Fchange-management","20.ai-developer\u002F03.iteration-debugging-recovery\u002F01.change-management",{"title":5190,"path":5191,"stem":5192},"Надійність інтерфейсу та обробка помилок","\u002Fai-developer\u002Fiteration-debugging-recovery\u002Fscenario-reliability-and-errors","20.ai-developer\u002F03.iteration-debugging-recovery\u002F02.scenario-reliability-and-errors",{"title":5194,"path":5195,"stem":5196},"Керування контекстом і збереження версій","\u002Fai-developer\u002Fiteration-debugging-recovery\u002Fproject-context-and-versions","20.ai-developer\u002F03.iteration-debugging-recovery\u002F03.project-context-and-versions",{"title":5198,"path":5199,"stem":5200},"Збої AI-розробки, ліміти та аварійне відновлення","\u002Fai-developer\u002Fiteration-debugging-recovery\u002Fai-breakdowns-and-recovery","20.ai-developer\u002F03.iteration-debugging-recovery\u002F04.ai-breakdowns-and-recovery",{"title":5202,"icon":5203,"path":5204,"stem":5205,"children":5206,"page":59},"Перевірка та завершення продукту","i-lucide-check-check","\u002Fai-developer\u002Fverification-and-completion","20.ai-developer\u002F04.verification-and-completion",[5207,5211,5215],{"title":5208,"path":5209,"stem":5210},"Комплексний аудит та підсумкове тестування","\u002Fai-developer\u002Fverification-and-completion\u002Ffinal-product-testing","20.ai-developer\u002F04.verification-and-completion\u002F01.final-product-testing",{"title":5212,"path":5213,"stem":5214},"Підготовка підсумкової версії коду","\u002Fai-developer\u002Fverification-and-completion\u002Fpreparing-release-version","20.ai-developer\u002F04.verification-and-completion\u002F02.preparing-release-version",{"title":5216,"path":5217,"stem":5218},"Демонстрація, публікація та критерії оцінювання","\u002Fai-developer\u002Fverification-and-completion\u002Fproduct-showcase-and-publishing","20.ai-developer\u002F04.verification-and-completion\u002F03.product-showcase-and-publishing",{"title":5220,"path":5221,"stem":5222,"children":5223,"page":59},"Tailwind","\u002Ftailwind","21.tailwind",[5224,5228,5232,5236,5240,5244,5248,5252,5256,5260,5264,5268],{"title":5225,"path":5226,"stem":5227},"Що таке Tailwind CSS і навіщо він потрібен","\u002Ftailwind\u002Ftailwind-intro-philosophy","21.tailwind\u002F01.tailwind-intro-philosophy",{"title":5229,"path":5230,"stem":5231},"Встановлення та налаштування Tailwind CSS v4","\u002Ftailwind\u002Ftailwind-installation-setup","21.tailwind\u002F02.tailwind-installation-setup",{"title":5233,"path":5234,"stem":5235},"Utility-класи: основи та система Tailwind","\u002Ftailwind\u002Ftailwind-utility-classes-core","21.tailwind\u002F03.tailwind-utility-classes-core",{"title":5237,"path":5238,"stem":5239},"Layout: Flexbox та Grid через Tailwind","\u002Ftailwind\u002Ftailwind-flexbox-grid","21.tailwind\u002F04.tailwind-flexbox-grid",{"title":5241,"path":5242,"stem":5243},"Кастомізація теми через @theme у Tailwind v4","\u002Ftailwind\u002Ftailwind-theme-customization","21.tailwind\u002F05.tailwind-theme-customization",{"title":5245,"path":5246,"stem":5247},"Варіанти: hover, focus, responsive, dark mode та нові v4","\u002Ftailwind\u002Ftailwind-variants-states","21.tailwind\u002F06.tailwind-variants-states",{"title":5249,"path":5250,"stem":5251},"Типографіка та система кольорів у Tailwind v4","\u002Ftailwind\u002Ftailwind-typography-colors","21.tailwind\u002F07.tailwind-typography-colors",{"title":5253,"path":5254,"stem":5255},"Компоненти та повторюваність: @apply, @utility та патерни","\u002Ftailwind\u002Ftailwind-components-patterns","21.tailwind\u002F08.tailwind-components-patterns",{"title":5257,"path":5258,"stem":5259},"Темна тема та система дизайн-токенів у Tailwind v4","\u002Ftailwind\u002Ftailwind-dark-mode-theming","21.tailwind\u002F09.tailwind-dark-mode-theming",{"title":5261,"path":5262,"stem":5263},"Довільні значення та контейнерні запити у Tailwind v4","\u002Ftailwind\u002Ftailwind-arbitrary-container-queries","21.tailwind\u002F10.tailwind-arbitrary-container-queries",{"title":5265,"path":5266,"stem":5267},"Анімації, трансформації та 3D у Tailwind v4","\u002Ftailwind\u002Ftailwind-animations-transforms","21.tailwind\u002F11.tailwind-animations-transforms",{"title":5269,"path":5270,"stem":5271},"Tailwind CLI, PostCSS та інтеграція з фреймворками","\u002Ftailwind\u002Ftailwind-cli-tooling","21.tailwind\u002F12.tailwind-cli-tooling",{"title":5273,"path":5274,"stem":5275,"children":5276,"page":59},"React Typescript","\u002Freact-typescript","22.react-typescript",[5277,5302,5306,5310,5314,5318,5322,5326,5330,5334,5364,5368,5372,5376,5380],{"title":5278,"path":5279,"stem":5280,"children":5281,"page":59},"From Html To Project","\u002Freact-typescript\u002Ffrom-html-to-project","22.react-typescript\u002F01.from-html-to-project",[5282,5286,5290,5294,5298],{"title":5283,"path":5284,"stem":5285},"Від одного HTML-файлу до повноцінного проєкту","\u002Freact-typescript\u002Ffrom-html-to-project\u002Fevolution","22.react-typescript\u002F01.from-html-to-project\u002F01.evolution",{"title":5287,"path":5288,"stem":5289},"Що таке React","\u002Freact-typescript\u002Ffrom-html-to-project\u002Fwhat-is-react","22.react-typescript\u002F01.from-html-to-project\u002F02.what-is-react",{"title":5291,"path":5292,"stem":5293},"JSX та TSX — синтаксичний цукор, а не магія","\u002Freact-typescript\u002Ffrom-html-to-project\u002Fjsx-tsx-syntax","22.react-typescript\u002F01.from-html-to-project\u002F03.jsx-tsx-syntax",{"title":5295,"path":5296,"stem":5297},"Компоненти — будівельні блоки інтерфейсу","\u002Freact-typescript\u002Ffrom-html-to-project\u002Fcomponents","22.react-typescript\u002F01.from-html-to-project\u002F04.components",{"title":5299,"path":5300,"stem":5301},"JSX — розмітка всередині TypeScript","\u002Freact-typescript\u002Ffrom-html-to-project\u002Fjsx-expressions","22.react-typescript\u002F01.from-html-to-project\u002F05.jsx-expressions",{"title":5303,"path":5304,"stem":5305},"Хук useReducer: структуроване управління складним станом","\u002Freact-typescript\u002Fuse-reducer","22.react-typescript\u002F23.use-reducer",{"title":5307,"path":5308,"stem":5309},"Context API: передавання даних без «пропс-дрілінгу»","\u002Freact-typescript\u002Fcontext-api","22.react-typescript\u002F24.context-api",{"title":5311,"path":5312,"stem":5313},"Синхронізація з ефектами: хук useEffect та функції очищення","\u002Freact-typescript\u002Fuse-effect","22.react-typescript\u002F27.use-effect",{"title":5315,"path":5316,"stem":5317},"Можливо, вам не потрібен ефект: антипатерни та альтернативи","\u002Freact-typescript\u002Fyou-might-not-need-effect","22.react-typescript\u002F28.you-might-not-need-effect",{"title":5319,"path":5320,"stem":5321},"Життєвий цикл реактивних ефектів: мислення процесами синхронізації","\u002Freact-typescript\u002Flifecycle-of-reactive-effects","22.react-typescript\u002F29.lifecycle-of-reactive-effects",{"title":5323,"path":5324,"stem":5325},"Розділення подій та ефектів: реактивна проти нереактивної логіки","\u002Freact-typescript\u002Fseparating-events-from-effects","22.react-typescript\u002F30.separating-events-from-effects",{"title":5327,"path":5328,"stem":5329},"Видалення зайвих залежностей ефектів та оптимізація синхронізації","\u002Freact-typescript\u002Fremoving-effect-dependencies","22.react-typescript\u002F31.removing-effect-dependencies",{"title":5331,"path":5332,"stem":5333},"Кастомні хуки: повторне використання та композиція реактивної логіки","\u002Freact-typescript\u002Fcustom-hooks","22.react-typescript\u002F32.custom-hooks",{"title":5335,"path":5336,"stem":5337,"children":5338},"React Router v7: Маршрутизація в SPA","\u002Freact-typescript\u002Freact-router-v7","22.react-typescript\u002F33.react-router-v7\u002Findex",[5339,5340,5344,5348,5352,5356,5360],{"title":5335,"path":5336,"stem":5337},{"title":5341,"path":5342,"stem":5343},"Встановлення та базова конфігурація React Router v7","\u002Freact-typescript\u002Freact-router-v7\u002Finstallation-setup","22.react-typescript\u002F33.react-router-v7\u002F01.installation-setup",{"title":5345,"path":5346,"stem":5347},"Вкладені маршрути та Outlet: архітектура складних макетів","\u002Freact-typescript\u002Freact-router-v7\u002Fnested-routes-outlet","22.react-typescript\u002F33.react-router-v7\u002F02.nested-routes-outlet",{"title":5349,"path":5350,"stem":5351},"Динамічні маршрути та параметри URL","\u002Freact-typescript\u002Freact-router-v7\u002Fdynamic-routes-params","22.react-typescript\u002F33.react-router-v7\u002F03.dynamic-routes-params",{"title":5353,"path":5354,"stem":5355},"Навігація та корисні хуки React Router","\u002Freact-typescript\u002Freact-router-v7\u002Fnavigation-hooks","22.react-typescript\u002F33.react-router-v7\u002F04.navigation-hooks",{"title":5357,"path":5358,"stem":5359},"Обробка помилок та 404: ErrorBoundary і fallback-маршрути","\u002Freact-typescript\u002Freact-router-v7\u002Ferror-handling-404","22.react-typescript\u002F33.react-router-v7\u002F05.error-handling-404",{"title":5361,"path":5362,"stem":5363},"Data Router API: альтернативний синтаксис через createBrowserRouter","\u002Freact-typescript\u002Freact-router-v7\u002Fdata-router-api-examples","22.react-typescript\u002F33.react-router-v7\u002F06.data-router-api-examples",{"title":5365,"path":5366,"stem":5367},"Axios: HTTP-клієнт із розширеними можливостями","\u002Freact-typescript\u002Faxios","22.react-typescript\u002F34.axios",{"title":5369,"path":5370,"stem":5371},"Redux: класичний підхід до глобального стану","\u002Freact-typescript\u002Fredux-classic","22.react-typescript\u002F35.redux-classic",{"title":5373,"path":5374,"stem":5375},"Redux Toolkit: сучасний стандарт Redux","\u002Freact-typescript\u002Fredux-toolkit","22.react-typescript\u002F36.redux-toolkit",{"title":5377,"path":5378,"stem":5379},"RTK Query: запити до сервера без болю","\u002Freact-typescript\u002Frtk-query-tanstack-query","22.react-typescript\u002F38.rtk-query-tanstack-query",{"title":5381,"path":5382,"stem":5383},"React Hook Form + Zod: типобезпечна валідація форм","\u002Freact-typescript\u002Freact-hook-form-zod","22.react-typescript\u002F39.react-hook-form-zod",{"title":5385,"path":5386,"stem":5387},"Тестування компонентів діаграм та пісочниць","\u002Ftest-components","98.test-components",{"id":5389,"title":1753,"body":5390,"description":20816,"extension":20817,"links":20818,"meta":20819,"navigation":5588,"path":1754,"seo":20820,"stem":1755,"__hash__":20821},"docs\u002F02.cpp\u002F100.ranges-views.md",{"type":5391,"value":5392,"toc":20756},"minimark",[5393,5397,5523,5526,5531,5538,5543,6125,6130,6178,6182,6586,6595,6600,6699,6714,6716,6720,6731,6735,6943,6948,6972,6976,7179,7226,7230,7237,7544,7549,7674,7676,7680,7693,7727,7733,8069,8080,8216,8220,8359,8361,8365,8372,8380,8620,8625,8844,8855,8863,8871,9360,9374,9381,9729,9740,9750,10147,10162,10169,10418,10429,10439,10776,10787,10795,11062,11064,11068,11332,11334,11340,11352,11675,11682,11829,11834,11998,12213,12215,12219,12228,12232,12783,12812,12816,12998,13031,13033,13037,13044,13048,13556,13560,13567,13984,14010,14089,14091,14095,15790,15792,15796,15800,16627,16654,16703,16707,16710,17057,17240,17242,17246,17250,17453,17459,17678,17682,17912,17916,18120,18122,18126,18130,18424,18428,18867,18871,19115,19117,19121,19124,19131,19390,19397,19607,19614,19810,19812,19816,19945,19978,20011,20013,20017,20554,20752],[5394,5395,1753],"h1",{"id":5396},"революція-c20-ranges-та-views",[5398,5399,5400,5478],"card-group",{},[5401,5402,5405],"card",{"icon":5403,"title":5404},"i-lucide-target","🎯 Мета лекції",[5406,5407,5408,5417,5429,5445,5460,5471],"ul",{},[5409,5410,5411,5412,5416],"li",{},"Зрозуміти ",[5413,5414,5415],"strong",{},"обмеження класичних STL алгоритмів"," і мотивацію для створення Ranges.",[5409,5418,5419,5420,5423,5424,5428],{},"Опанувати ",[5413,5421,5422],{},"концепцію range"," як узагальнення пари ітераторів ",[5425,5426,5427],"code",{},"[begin, end)",".",[5409,5430,5431,5432,5435,5436,5439,5440,5444],{},"Використати ",[5413,5433,5434],{},"views"," (адаптори) для ",[5413,5437,5438],{},"ледачої трансформації"," (",[5441,5442,5443],"em",{},"lazy evaluation",") послідовностей.",[5409,5446,5447,5448,5451,5452,5455,5456,5459],{},"Застосувати ",[5413,5449,5450],{},"piping оператор"," ",[5425,5453,5454],{},"|"," для ",[5413,5457,5458],{},"композиції операцій"," у функціональному стилі.",[5409,5461,5462,5463,5466,5467,5470],{},"Перейти від ",[5413,5464,5465],{},"імперативних циклів"," до ",[5413,5468,5469],{},"декларативного опису"," обробки даних.",[5409,5472,5473,5474,5477],{},"Порівняти ",[5413,5475,5476],{},"продуктивність"," ranges з класичними підходами.",[5401,5479,5481],{"icon":4776,"title":5480},"🔑 Ключові терміни",[5406,5482,5483,5496,5502,5508,5517],{},[5409,5484,5485,5488,5489,5492,5493,5428],{},[5413,5486,5487],{},"Range (Діапазон):"," узагальнення пари ітераторів, що представляє послідовність елементів з методами ",[5425,5490,5491],{},"begin()"," та ",[5425,5494,5495],{},"end()",[5409,5497,5498,5501],{},[5413,5499,5500],{},"View (Представлення):"," ледачий адаптор range, що не володіє даними, а надає трансформоване уявлення вихідного діапазону.",[5409,5503,5504,5507],{},[5413,5505,5506],{},"Lazy Evaluation (Ледаче обчислення):"," відкладення обчислень до моменту, коли результат дійсно потрібен (на відміну від eager evaluation).",[5409,5509,5510,5513,5514,5516],{},[5413,5511,5512],{},"Piping (Конвеєр):"," композиція операцій через оператор ",[5425,5515,5454],{},", де вихід однієї операції стає входом наступної.",[5409,5518,5519,5522],{},[5413,5520,5521],{},"Range-based Algorithm (Алгоритм на основі діапазонів):"," версія STL алгоритму, що приймає range замість пари ітераторів.",[5524,5525],"hr",{},[5527,5528,5530],"h2",{"id":5529},"hook-від-лапши-коду-до-елегантного-конвеєра","Hook: від лапши коду до елегантного конвеєра",[5532,5533,5534,5535,5428],"p",{},"Уявіть типову задачу: ",[5413,5536,5537],{},"з вектора чисел взяти перші 10 парних, помножити кожне на 2, та відсортувати",[5539,5540,5542],"h3",{"id":5541},"класичний-stl-підхід-c98c17","❌ Класичний STL підхід (C++98–C++17)",[5544,5545,5552],"pre",{"className":5546,"code":5547,"filename":5548,"language":5549,"meta":5550,"style":5551},"language-cpp shiki shiki-themes light-plus dark-plus dark-plus","#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Calgorithm>\n\nint main()\n{\n    std::vector\u003Cint> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, \n                                11, 12, 13, 14, 15, 16, 17, 18, 19, 20};\n    \n    \u002F\u002F Крок 1: Фільтруємо парні\n    std::vector\u003Cint> evens;\n    std::copy_if(numbers.begin(), numbers.end(), \n                 std::back_inserter(evens),\n                 [](int n) { return n % 2 == 0; });\n    \n    \u002F\u002F Крок 2: Беремо перші 10\n    if (evens.size() > 10)\n        evens.resize(10);\n    \n    \u002F\u002F Крок 3: Множимо на 2\n    std::transform(evens.begin(), evens.end(), evens.begin(),\n                   [](int n) { return n * 2; });\n    \n    \u002F\u002F Крок 4: Сортуємо\n    std::sort(evens.begin(), evens.end());\n    \n    \u002F\u002F Виводимо\n    for (int n : evens)\n        std::cout \u003C\u003C n \u003C\u003C \" \";\n    std::cout \u003C\u003C \"\\n\";\n    \n    return 0;\n}\n","OldStyleSTL.cpp","cpp","showLineNumbers","",[5425,5553,5554,5567,5575,5583,5590,5605,5611,5692,5746,5752,5759,5780,5813,5831,5864,5869,5875,5898,5916,5921,5927,5964,5987,5992,5998,6027,6032,6038,6057,6081,6103,6108,6119],{"__ignoreMap":5551},[5555,5556,5559,5563],"span",{"class":5557,"line":5558},"line",1,[5555,5560,5562],{"class":5561},"s8xlr","#include",[5555,5564,5566],{"class":5565},"sbdoH"," \u003Ciostream>\n",[5555,5568,5570,5572],{"class":5557,"line":5569},2,[5555,5571,5562],{"class":5561},[5555,5573,5574],{"class":5565}," \u003Cvector>\n",[5555,5576,5578,5580],{"class":5557,"line":5577},3,[5555,5579,5562],{"class":5561},[5555,5581,5582],{"class":5565}," \u003Calgorithm>\n",[5555,5584,5586],{"class":5557,"line":5585},4,[5555,5587,5589],{"emptyLinePlaceholder":5588},true,"\n",[5555,5591,5593,5597,5601],{"class":5557,"line":5592},5,[5555,5594,5596],{"class":5595},"su1O8","int",[5555,5598,5600],{"class":5599},"s8Opu"," main",[5555,5602,5604],{"class":5603},"sHH4Y","()\n",[5555,5606,5608],{"class":5557,"line":5607},6,[5555,5609,5610],{"class":5603},"{\n",[5555,5612,5614,5618,5621,5624,5627,5629,5632,5636,5639,5643,5646,5649,5651,5654,5656,5659,5661,5664,5666,5669,5671,5674,5676,5679,5681,5684,5686,5689],{"class":5557,"line":5613},7,[5555,5615,5617],{"class":5616},"sN1BT","    std",[5555,5619,5620],{"class":5603},"::",[5555,5622,5623],{"class":5616},"vector",[5555,5625,5626],{"class":5603},"\u003C",[5555,5628,5596],{"class":5595},[5555,5630,5631],{"class":5603},"> ",[5555,5633,5635],{"class":5634},"siwwj","numbers",[5555,5637,5638],{"class":5603}," = {",[5555,5640,5642],{"class":5641},"sJj4R","1",[5555,5644,5645],{"class":5603},", ",[5555,5647,5648],{"class":5641},"2",[5555,5650,5645],{"class":5603},[5555,5652,5653],{"class":5641},"3",[5555,5655,5645],{"class":5603},[5555,5657,5658],{"class":5641},"4",[5555,5660,5645],{"class":5603},[5555,5662,5663],{"class":5641},"5",[5555,5665,5645],{"class":5603},[5555,5667,5668],{"class":5641},"6",[5555,5670,5645],{"class":5603},[5555,5672,5673],{"class":5641},"7",[5555,5675,5645],{"class":5603},[5555,5677,5678],{"class":5641},"8",[5555,5680,5645],{"class":5603},[5555,5682,5683],{"class":5641},"9",[5555,5685,5645],{"class":5603},[5555,5687,5688],{"class":5641},"10",[5555,5690,5691],{"class":5603},", \n",[5555,5693,5695,5698,5700,5703,5705,5708,5710,5713,5715,5718,5720,5723,5725,5728,5730,5733,5735,5738,5740,5743],{"class":5557,"line":5694},8,[5555,5696,5697],{"class":5641},"                                11",[5555,5699,5645],{"class":5603},[5555,5701,5702],{"class":5641},"12",[5555,5704,5645],{"class":5603},[5555,5706,5707],{"class":5641},"13",[5555,5709,5645],{"class":5603},[5555,5711,5712],{"class":5641},"14",[5555,5714,5645],{"class":5603},[5555,5716,5717],{"class":5641},"15",[5555,5719,5645],{"class":5603},[5555,5721,5722],{"class":5641},"16",[5555,5724,5645],{"class":5603},[5555,5726,5727],{"class":5641},"17",[5555,5729,5645],{"class":5603},[5555,5731,5732],{"class":5641},"18",[5555,5734,5645],{"class":5603},[5555,5736,5737],{"class":5641},"19",[5555,5739,5645],{"class":5603},[5555,5741,5742],{"class":5641},"20",[5555,5744,5745],{"class":5603},"};\n",[5555,5747,5749],{"class":5557,"line":5748},9,[5555,5750,5751],{"class":5603},"    \n",[5555,5753,5755],{"class":5557,"line":5754},10,[5555,5756,5758],{"class":5757},"spJ8K","    \u002F\u002F Крок 1: Фільтруємо парні\n",[5555,5760,5762,5764,5766,5768,5770,5772,5774,5777],{"class":5557,"line":5761},11,[5555,5763,5617],{"class":5616},[5555,5765,5620],{"class":5603},[5555,5767,5623],{"class":5616},[5555,5769,5626],{"class":5603},[5555,5771,5596],{"class":5595},[5555,5773,5631],{"class":5603},[5555,5775,5776],{"class":5634},"evens",[5555,5778,5779],{"class":5603},";\n",[5555,5781,5783,5785,5787,5790,5793,5795,5797,5800,5803,5805,5807,5810],{"class":5557,"line":5782},12,[5555,5784,5617],{"class":5616},[5555,5786,5620],{"class":5603},[5555,5788,5789],{"class":5599},"copy_if",[5555,5791,5792],{"class":5603},"(",[5555,5794,5635],{"class":5634},[5555,5796,5428],{"class":5603},[5555,5798,5799],{"class":5599},"begin",[5555,5801,5802],{"class":5603},"(), ",[5555,5804,5635],{"class":5634},[5555,5806,5428],{"class":5603},[5555,5808,5809],{"class":5599},"end",[5555,5811,5812],{"class":5603},"(), \n",[5555,5814,5816,5819,5821,5824,5826,5828],{"class":5557,"line":5815},13,[5555,5817,5818],{"class":5616},"                 std",[5555,5820,5620],{"class":5603},[5555,5822,5823],{"class":5599},"back_inserter",[5555,5825,5792],{"class":5603},[5555,5827,5776],{"class":5634},[5555,5829,5830],{"class":5603},"),\n",[5555,5832,5834,5837,5839,5842,5845,5848,5850,5853,5855,5858,5861],{"class":5557,"line":5833},14,[5555,5835,5836],{"class":5603},"                 [](",[5555,5838,5596],{"class":5595},[5555,5840,5841],{"class":5634}," n",[5555,5843,5844],{"class":5603},") { ",[5555,5846,5847],{"class":5561},"return",[5555,5849,5841],{"class":5634},[5555,5851,5852],{"class":5603}," % ",[5555,5854,5648],{"class":5641},[5555,5856,5857],{"class":5603}," == ",[5555,5859,5860],{"class":5641},"0",[5555,5862,5863],{"class":5603},"; });\n",[5555,5865,5867],{"class":5557,"line":5866},15,[5555,5868,5751],{"class":5603},[5555,5870,5872],{"class":5557,"line":5871},16,[5555,5873,5874],{"class":5757},"    \u002F\u002F Крок 2: Беремо перші 10\n",[5555,5876,5878,5881,5883,5885,5887,5890,5893,5895],{"class":5557,"line":5877},17,[5555,5879,5880],{"class":5561},"    if",[5555,5882,5439],{"class":5603},[5555,5884,5776],{"class":5634},[5555,5886,5428],{"class":5603},[5555,5888,5889],{"class":5599},"size",[5555,5891,5892],{"class":5603},"() > ",[5555,5894,5688],{"class":5641},[5555,5896,5897],{"class":5603},")\n",[5555,5899,5901,5904,5906,5909,5911,5913],{"class":5557,"line":5900},18,[5555,5902,5903],{"class":5634},"        evens",[5555,5905,5428],{"class":5603},[5555,5907,5908],{"class":5599},"resize",[5555,5910,5792],{"class":5603},[5555,5912,5688],{"class":5641},[5555,5914,5915],{"class":5603},");\n",[5555,5917,5919],{"class":5557,"line":5918},19,[5555,5920,5751],{"class":5603},[5555,5922,5924],{"class":5557,"line":5923},20,[5555,5925,5926],{"class":5757},"    \u002F\u002F Крок 3: Множимо на 2\n",[5555,5928,5930,5932,5934,5937,5939,5941,5943,5945,5947,5949,5951,5953,5955,5957,5959,5961],{"class":5557,"line":5929},21,[5555,5931,5617],{"class":5616},[5555,5933,5620],{"class":5603},[5555,5935,5936],{"class":5599},"transform",[5555,5938,5792],{"class":5603},[5555,5940,5776],{"class":5634},[5555,5942,5428],{"class":5603},[5555,5944,5799],{"class":5599},[5555,5946,5802],{"class":5603},[5555,5948,5776],{"class":5634},[5555,5950,5428],{"class":5603},[5555,5952,5809],{"class":5599},[5555,5954,5802],{"class":5603},[5555,5956,5776],{"class":5634},[5555,5958,5428],{"class":5603},[5555,5960,5799],{"class":5599},[5555,5962,5963],{"class":5603},"(),\n",[5555,5965,5967,5970,5972,5974,5976,5978,5980,5983,5985],{"class":5557,"line":5966},22,[5555,5968,5969],{"class":5603},"                   [](",[5555,5971,5596],{"class":5595},[5555,5973,5841],{"class":5634},[5555,5975,5844],{"class":5603},[5555,5977,5847],{"class":5561},[5555,5979,5841],{"class":5634},[5555,5981,5982],{"class":5603}," * ",[5555,5984,5648],{"class":5641},[5555,5986,5863],{"class":5603},[5555,5988,5990],{"class":5557,"line":5989},23,[5555,5991,5751],{"class":5603},[5555,5993,5995],{"class":5557,"line":5994},24,[5555,5996,5997],{"class":5757},"    \u002F\u002F Крок 4: Сортуємо\n",[5555,5999,6001,6003,6005,6008,6010,6012,6014,6016,6018,6020,6022,6024],{"class":5557,"line":6000},25,[5555,6002,5617],{"class":5616},[5555,6004,5620],{"class":5603},[5555,6006,6007],{"class":5599},"sort",[5555,6009,5792],{"class":5603},[5555,6011,5776],{"class":5634},[5555,6013,5428],{"class":5603},[5555,6015,5799],{"class":5599},[5555,6017,5802],{"class":5603},[5555,6019,5776],{"class":5634},[5555,6021,5428],{"class":5603},[5555,6023,5809],{"class":5599},[5555,6025,6026],{"class":5603},"());\n",[5555,6028,6030],{"class":5557,"line":6029},26,[5555,6031,5751],{"class":5603},[5555,6033,6035],{"class":5557,"line":6034},27,[5555,6036,6037],{"class":5757},"    \u002F\u002F Виводимо\n",[5555,6039,6041,6044,6046,6048,6050,6053,6055],{"class":5557,"line":6040},28,[5555,6042,6043],{"class":5561},"    for",[5555,6045,5439],{"class":5603},[5555,6047,5596],{"class":5595},[5555,6049,5841],{"class":5634},[5555,6051,6052],{"class":5603}," : ",[5555,6054,5776],{"class":5634},[5555,6056,5897],{"class":5603},[5555,6058,6060,6063,6065,6068,6071,6074,6076,6079],{"class":5557,"line":6059},29,[5555,6061,6062],{"class":5616},"        std",[5555,6064,5620],{"class":5603},[5555,6066,6067],{"class":5634},"cout",[5555,6069,6070],{"class":5603}," \u003C\u003C ",[5555,6072,6073],{"class":5634},"n",[5555,6075,6070],{"class":5603},[5555,6077,6078],{"class":5565},"\" \"",[5555,6080,5779],{"class":5603},[5555,6082,6084,6086,6088,6090,6092,6095,6099,6101],{"class":5557,"line":6083},30,[5555,6085,5617],{"class":5616},[5555,6087,5620],{"class":5603},[5555,6089,6067],{"class":5634},[5555,6091,6070],{"class":5603},[5555,6093,6094],{"class":5565},"\"",[5555,6096,6098],{"class":6097},"sjcCO","\\n",[5555,6100,6094],{"class":5565},[5555,6102,5779],{"class":5603},[5555,6104,6106],{"class":5557,"line":6105},31,[5555,6107,5751],{"class":5603},[5555,6109,6111,6114,6117],{"class":5557,"line":6110},32,[5555,6112,6113],{"class":5561},"    return",[5555,6115,6116],{"class":5641}," 0",[5555,6118,5779],{"class":5603},[5555,6120,6122],{"class":5557,"line":6121},33,[5555,6123,6124],{"class":5603},"}\n",[5532,6126,6127],{},[5413,6128,6129],{},"Проблеми цього коду:",[6131,6132,6133,6139,6147,6157,6163],"ol",{},[5409,6134,6135,6138],{},[5413,6136,6137],{},"Багатослівність:"," 25+ рядків для простої операції",[5409,6140,6141,5451,6144,6146],{},[5413,6142,6143],{},"Проміжні контейнери:",[5425,6145,5776],{}," створюється на купі, витрачає пам'ять",[5409,6148,6149,6152,6153,6156],{},[5413,6150,6151],{},"Eager evaluation:"," кожен крок обробляє ",[5413,6154,6155],{},"всі"," елементи, навіть якщо нам потрібно лише 10",[5409,6158,6159,6162],{},[5413,6160,6161],{},"Нечитабельність:"," логіка розмазана, важко побачити \"що ми робимо\"",[5409,6164,6165,6168,6169,5492,6172,6175,6176],{},[5413,6166,6167],{},"Помилки:"," легко переплутати ",[5425,6170,6171],{},".begin()",[5425,6173,6174],{},".end()",", забути ",[5425,6177,5823],{},[5539,6179,6181],{"id":6180},"c20-ranges-підхід","✅ C++20 Ranges підхід",[5544,6183,6186],{"className":5546,"code":6184,"filename":6185,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Cranges>\n#include \u003Calgorithm>\n\nint main()\n{\n    std::vector\u003Cint> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, \n                                11, 12, 13, 14, 15, 16, 17, 18, 19, 20};\n    \n    \u002F\u002F Весь конвеєр в ОДНОМУ виразі\n    auto result = numbers\n        | std::views::filter([](int n) { return n % 2 == 0; })\n        | std::views::take(10)\n        | std::views::transform([](int n) { return n * 2; });\n    \n    \u002F\u002F Матеріалізуємо у вектор та сортуємо\n    std::vector\u003Cint> vec(result.begin(), result.end());\n    std::ranges::sort(vec);\n    \n    \u002F\u002F Виводимо\n    for (int n : vec)\n        std::cout \u003C\u003C n \u003C\u003C \" \";\n    std::cout \u003C\u003C \"\\n\";\n    \n    return 0;\n}\n","ModernRanges.cpp",[5425,6187,6188,6194,6200,6207,6213,6217,6225,6229,6287,6329,6333,6338,6352,6393,6414,6446,6450,6455,6491,6510,6514,6518,6534,6552,6570,6574,6582],{"__ignoreMap":5551},[5555,6189,6190,6192],{"class":5557,"line":5558},[5555,6191,5562],{"class":5561},[5555,6193,5566],{"class":5565},[5555,6195,6196,6198],{"class":5557,"line":5569},[5555,6197,5562],{"class":5561},[5555,6199,5574],{"class":5565},[5555,6201,6202,6204],{"class":5557,"line":5577},[5555,6203,5562],{"class":5561},[5555,6205,6206],{"class":5565}," \u003Cranges>\n",[5555,6208,6209,6211],{"class":5557,"line":5585},[5555,6210,5562],{"class":5561},[5555,6212,5582],{"class":5565},[5555,6214,6215],{"class":5557,"line":5592},[5555,6216,5589],{"emptyLinePlaceholder":5588},[5555,6218,6219,6221,6223],{"class":5557,"line":5607},[5555,6220,5596],{"class":5595},[5555,6222,5600],{"class":5599},[5555,6224,5604],{"class":5603},[5555,6226,6227],{"class":5557,"line":5613},[5555,6228,5610],{"class":5603},[5555,6230,6231,6233,6235,6237,6239,6241,6243,6245,6247,6249,6251,6253,6255,6257,6259,6261,6263,6265,6267,6269,6271,6273,6275,6277,6279,6281,6283,6285],{"class":5557,"line":5694},[5555,6232,5617],{"class":5616},[5555,6234,5620],{"class":5603},[5555,6236,5623],{"class":5616},[5555,6238,5626],{"class":5603},[5555,6240,5596],{"class":5595},[5555,6242,5631],{"class":5603},[5555,6244,5635],{"class":5634},[5555,6246,5638],{"class":5603},[5555,6248,5642],{"class":5641},[5555,6250,5645],{"class":5603},[5555,6252,5648],{"class":5641},[5555,6254,5645],{"class":5603},[5555,6256,5653],{"class":5641},[5555,6258,5645],{"class":5603},[5555,6260,5658],{"class":5641},[5555,6262,5645],{"class":5603},[5555,6264,5663],{"class":5641},[5555,6266,5645],{"class":5603},[5555,6268,5668],{"class":5641},[5555,6270,5645],{"class":5603},[5555,6272,5673],{"class":5641},[5555,6274,5645],{"class":5603},[5555,6276,5678],{"class":5641},[5555,6278,5645],{"class":5603},[5555,6280,5683],{"class":5641},[5555,6282,5645],{"class":5603},[5555,6284,5688],{"class":5641},[5555,6286,5691],{"class":5603},[5555,6288,6289,6291,6293,6295,6297,6299,6301,6303,6305,6307,6309,6311,6313,6315,6317,6319,6321,6323,6325,6327],{"class":5557,"line":5748},[5555,6290,5697],{"class":5641},[5555,6292,5645],{"class":5603},[5555,6294,5702],{"class":5641},[5555,6296,5645],{"class":5603},[5555,6298,5707],{"class":5641},[5555,6300,5645],{"class":5603},[5555,6302,5712],{"class":5641},[5555,6304,5645],{"class":5603},[5555,6306,5717],{"class":5641},[5555,6308,5645],{"class":5603},[5555,6310,5722],{"class":5641},[5555,6312,5645],{"class":5603},[5555,6314,5727],{"class":5641},[5555,6316,5645],{"class":5603},[5555,6318,5732],{"class":5641},[5555,6320,5645],{"class":5603},[5555,6322,5737],{"class":5641},[5555,6324,5645],{"class":5603},[5555,6326,5742],{"class":5641},[5555,6328,5745],{"class":5603},[5555,6330,6331],{"class":5557,"line":5754},[5555,6332,5751],{"class":5603},[5555,6334,6335],{"class":5557,"line":5761},[5555,6336,6337],{"class":5757},"    \u002F\u002F Весь конвеєр в ОДНОМУ виразі\n",[5555,6339,6340,6343,6346,6349],{"class":5557,"line":5782},[5555,6341,6342],{"class":5595},"    auto",[5555,6344,6345],{"class":5634}," result",[5555,6347,6348],{"class":5603}," = ",[5555,6350,6351],{"class":5634},"numbers\n",[5555,6353,6354,6357,6360,6362,6364,6366,6369,6372,6374,6376,6378,6380,6382,6384,6386,6388,6390],{"class":5557,"line":5815},[5555,6355,6356],{"class":5603},"        | ",[5555,6358,6359],{"class":5616},"std",[5555,6361,5620],{"class":5603},[5555,6363,5434],{"class":5616},[5555,6365,5620],{"class":5603},[5555,6367,6368],{"class":5599},"filter",[5555,6370,6371],{"class":5603},"([](",[5555,6373,5596],{"class":5595},[5555,6375,5841],{"class":5634},[5555,6377,5844],{"class":5603},[5555,6379,5847],{"class":5561},[5555,6381,5841],{"class":5634},[5555,6383,5852],{"class":5603},[5555,6385,5648],{"class":5641},[5555,6387,5857],{"class":5603},[5555,6389,5860],{"class":5641},[5555,6391,6392],{"class":5603},"; })\n",[5555,6394,6395,6397,6399,6401,6403,6405,6408,6410,6412],{"class":5557,"line":5833},[5555,6396,6356],{"class":5603},[5555,6398,6359],{"class":5616},[5555,6400,5620],{"class":5603},[5555,6402,5434],{"class":5616},[5555,6404,5620],{"class":5603},[5555,6406,6407],{"class":5599},"take",[5555,6409,5792],{"class":5603},[5555,6411,5688],{"class":5641},[5555,6413,5897],{"class":5603},[5555,6415,6416,6418,6420,6422,6424,6426,6428,6430,6432,6434,6436,6438,6440,6442,6444],{"class":5557,"line":5866},[5555,6417,6356],{"class":5603},[5555,6419,6359],{"class":5616},[5555,6421,5620],{"class":5603},[5555,6423,5434],{"class":5616},[5555,6425,5620],{"class":5603},[5555,6427,5936],{"class":5599},[5555,6429,6371],{"class":5603},[5555,6431,5596],{"class":5595},[5555,6433,5841],{"class":5634},[5555,6435,5844],{"class":5603},[5555,6437,5847],{"class":5561},[5555,6439,5841],{"class":5634},[5555,6441,5982],{"class":5603},[5555,6443,5648],{"class":5641},[5555,6445,5863],{"class":5603},[5555,6447,6448],{"class":5557,"line":5871},[5555,6449,5751],{"class":5603},[5555,6451,6452],{"class":5557,"line":5877},[5555,6453,6454],{"class":5757},"    \u002F\u002F Матеріалізуємо у вектор та сортуємо\n",[5555,6456,6457,6459,6461,6463,6465,6467,6469,6472,6474,6477,6479,6481,6483,6485,6487,6489],{"class":5557,"line":5900},[5555,6458,5617],{"class":5616},[5555,6460,5620],{"class":5603},[5555,6462,5623],{"class":5616},[5555,6464,5626],{"class":5603},[5555,6466,5596],{"class":5595},[5555,6468,5631],{"class":5603},[5555,6470,6471],{"class":5599},"vec",[5555,6473,5792],{"class":5603},[5555,6475,6476],{"class":5634},"result",[5555,6478,5428],{"class":5603},[5555,6480,5799],{"class":5599},[5555,6482,5802],{"class":5603},[5555,6484,6476],{"class":5634},[5555,6486,5428],{"class":5603},[5555,6488,5809],{"class":5599},[5555,6490,6026],{"class":5603},[5555,6492,6493,6495,6497,6500,6502,6504,6506,6508],{"class":5557,"line":5918},[5555,6494,5617],{"class":5616},[5555,6496,5620],{"class":5603},[5555,6498,6499],{"class":5616},"ranges",[5555,6501,5620],{"class":5603},[5555,6503,6007],{"class":5599},[5555,6505,5792],{"class":5603},[5555,6507,6471],{"class":5634},[5555,6509,5915],{"class":5603},[5555,6511,6512],{"class":5557,"line":5923},[5555,6513,5751],{"class":5603},[5555,6515,6516],{"class":5557,"line":5929},[5555,6517,6037],{"class":5757},[5555,6519,6520,6522,6524,6526,6528,6530,6532],{"class":5557,"line":5966},[5555,6521,6043],{"class":5561},[5555,6523,5439],{"class":5603},[5555,6525,5596],{"class":5595},[5555,6527,5841],{"class":5634},[5555,6529,6052],{"class":5603},[5555,6531,6471],{"class":5634},[5555,6533,5897],{"class":5603},[5555,6535,6536,6538,6540,6542,6544,6546,6548,6550],{"class":5557,"line":5989},[5555,6537,6062],{"class":5616},[5555,6539,5620],{"class":5603},[5555,6541,6067],{"class":5634},[5555,6543,6070],{"class":5603},[5555,6545,6073],{"class":5634},[5555,6547,6070],{"class":5603},[5555,6549,6078],{"class":5565},[5555,6551,5779],{"class":5603},[5555,6553,6554,6556,6558,6560,6562,6564,6566,6568],{"class":5557,"line":5994},[5555,6555,5617],{"class":5616},[5555,6557,5620],{"class":5603},[5555,6559,6067],{"class":5634},[5555,6561,6070],{"class":5603},[5555,6563,6094],{"class":5565},[5555,6565,6098],{"class":6097},[5555,6567,6094],{"class":5565},[5555,6569,5779],{"class":5603},[5555,6571,6572],{"class":5557,"line":6000},[5555,6573,5751],{"class":5603},[5555,6575,6576,6578,6580],{"class":5557,"line":6029},[5555,6577,6113],{"class":5561},[5555,6579,6116],{"class":5641},[5555,6581,5779],{"class":5603},[5555,6583,6584],{"class":5557,"line":6034},[5555,6585,6124],{"class":5603},[6587,6588,6590],"terminal-preview",{"title":6589},".\u002FModernRanges",[6591,6592,6594],"div",{"className":6593},[5557],"4 8 12 16 20 24 28 32 36 40",[5532,6596,6597],{},[5413,6598,6599],{},"Переваги Ranges:",[5398,6601,6602,6626,6654,6677],{},[5401,6603,6605,6612],{"icon":15,"title":6604},"📖 Читабельність",[5532,6606,6607,6608,6611],{},"Код читається ",[5413,6609,6610],{},"зверху вниз"," як англійське речення:",[5406,6613,6614,6617,6620,6623],{},[5409,6615,6616],{},"\"Візьми numbers\"",[5409,6618,6619],{},"\"Відфільтруй парні\"",[5409,6621,6622],{},"\"Візьми перші 10\"",[5409,6624,6625],{},"\"Помнож кожне на 2\"",[5401,6627,6629,6636],{"icon":92,"title":6628},"⚡ Ледаче обчислення",[5532,6630,6631,6632,6635],{},"Операції ",[5413,6633,6634],{},"не виконуються одразу",":",[5406,6637,6638,6644,6651],{},[5409,6639,6640,6641],{},"Фільтрація відбувається ",[5413,6642,6643],{},"під час ітерації",[5409,6645,6646,6647,6650],{},"Обробляються лише ",[5413,6648,6649],{},"10 елементів",", а не всі 20",[5409,6652,6653],{},"Немає проміжних контейнерів",[5401,6655,6658,6666],{"icon":6656,"title":6657},"i-lucide-puzzle","🎯 Композиція",[5532,6659,6631,6660,6663,6664,6635],{},[5413,6661,6662],{},"комбінуються"," через ",[5425,6665,5454],{},[5406,6667,6668,6671,6674],{},[5409,6669,6670],{},"Кожен view — це окрема трансформація",[5409,6672,6673],{},"Можна додавати\u002Fвидаляти кроки легко",[5409,6675,6676],{},"Багаторазове використання",[5401,6678,6680,6683],{"icon":4818,"title":6679},"🛡️ Безпека",[5532,6681,6682],{},"Менше місця для помилок:",[5406,6684,6685,6693,6696],{},[5409,6686,6687,6688,6690,6691],{},"Не потрібні ",[5425,6689,6171],{}," \u002F ",[5425,6692,6174],{},[5409,6694,6695],{},"Компілятор перевіряє сумісність",[5409,6697,6698],{},"Type-safe композиція",[6700,6701,6702,6705,6706,6709,6710,6713],"note",{},[5413,6703,6704],{},"Філософія Ranges:"," Код має ",[5413,6707,6708],{},"описувати \"що робити\"",", а не ",[5413,6711,6712],{},"\"як робити\"",". Ranges переміщують C++ ближче до функціональних мов (Haskell, F#, Scala), зберігаючи при цьому продуктивність.",[5524,6715],{},[5527,6717,6719],{"id":6718},"що-таке-range","Що таке Range?",[5532,6721,6722,6725,6726,5451,6729,5428],{},[5413,6723,6724],{},"Range"," — це узагальнення концепції ",[5413,6727,6728],{},"пари ітераторів",[5425,6730,5427],{},[5539,6732,6734],{"id":6733},"класичний-stl-пара-ітераторів","Класичний STL: пара ітераторів",[5544,6736,6739],{"className":5546,"code":6737,"filename":6738,"language":5549,"meta":5550,"style":5551},"#include \u003Cvector>\n#include \u003Calgorithm>\n\nint main()\n{\n    std::vector\u003Cint> vec = {1, 2, 3, 4, 5};\n    \n    \u002F\u002F Класичний STL: передаємо begin() та end() окремо\n    std::sort(vec.begin(), vec.end());\n    \n    auto it = std::find(vec.begin(), vec.end(), 3);\n    \n    int sum = std::accumulate(vec.begin(), vec.end(), 0);\n    \n    return 0;\n}\n","IteratorPair.cpp",[5425,6740,6741,6747,6753,6757,6765,6769,6807,6811,6816,6842,6846,6884,6888,6927,6931,6939],{"__ignoreMap":5551},[5555,6742,6743,6745],{"class":5557,"line":5558},[5555,6744,5562],{"class":5561},[5555,6746,5574],{"class":5565},[5555,6748,6749,6751],{"class":5557,"line":5569},[5555,6750,5562],{"class":5561},[5555,6752,5582],{"class":5565},[5555,6754,6755],{"class":5557,"line":5577},[5555,6756,5589],{"emptyLinePlaceholder":5588},[5555,6758,6759,6761,6763],{"class":5557,"line":5585},[5555,6760,5596],{"class":5595},[5555,6762,5600],{"class":5599},[5555,6764,5604],{"class":5603},[5555,6766,6767],{"class":5557,"line":5592},[5555,6768,5610],{"class":5603},[5555,6770,6771,6773,6775,6777,6779,6781,6783,6785,6787,6789,6791,6793,6795,6797,6799,6801,6803,6805],{"class":5557,"line":5607},[5555,6772,5617],{"class":5616},[5555,6774,5620],{"class":5603},[5555,6776,5623],{"class":5616},[5555,6778,5626],{"class":5603},[5555,6780,5596],{"class":5595},[5555,6782,5631],{"class":5603},[5555,6784,6471],{"class":5634},[5555,6786,5638],{"class":5603},[5555,6788,5642],{"class":5641},[5555,6790,5645],{"class":5603},[5555,6792,5648],{"class":5641},[5555,6794,5645],{"class":5603},[5555,6796,5653],{"class":5641},[5555,6798,5645],{"class":5603},[5555,6800,5658],{"class":5641},[5555,6802,5645],{"class":5603},[5555,6804,5663],{"class":5641},[5555,6806,5745],{"class":5603},[5555,6808,6809],{"class":5557,"line":5613},[5555,6810,5751],{"class":5603},[5555,6812,6813],{"class":5557,"line":5694},[5555,6814,6815],{"class":5757},"    \u002F\u002F Класичний STL: передаємо begin() та end() окремо\n",[5555,6817,6818,6820,6822,6824,6826,6828,6830,6832,6834,6836,6838,6840],{"class":5557,"line":5748},[5555,6819,5617],{"class":5616},[5555,6821,5620],{"class":5603},[5555,6823,6007],{"class":5599},[5555,6825,5792],{"class":5603},[5555,6827,6471],{"class":5634},[5555,6829,5428],{"class":5603},[5555,6831,5799],{"class":5599},[5555,6833,5802],{"class":5603},[5555,6835,6471],{"class":5634},[5555,6837,5428],{"class":5603},[5555,6839,5809],{"class":5599},[5555,6841,6026],{"class":5603},[5555,6843,6844],{"class":5557,"line":5754},[5555,6845,5751],{"class":5603},[5555,6847,6848,6850,6853,6855,6857,6859,6862,6864,6866,6868,6870,6872,6874,6876,6878,6880,6882],{"class":5557,"line":5761},[5555,6849,6342],{"class":5595},[5555,6851,6852],{"class":5634}," it",[5555,6854,6348],{"class":5603},[5555,6856,6359],{"class":5616},[5555,6858,5620],{"class":5603},[5555,6860,6861],{"class":5599},"find",[5555,6863,5792],{"class":5603},[5555,6865,6471],{"class":5634},[5555,6867,5428],{"class":5603},[5555,6869,5799],{"class":5599},[5555,6871,5802],{"class":5603},[5555,6873,6471],{"class":5634},[5555,6875,5428],{"class":5603},[5555,6877,5809],{"class":5599},[5555,6879,5802],{"class":5603},[5555,6881,5653],{"class":5641},[5555,6883,5915],{"class":5603},[5555,6885,6886],{"class":5557,"line":5782},[5555,6887,5751],{"class":5603},[5555,6889,6890,6893,6896,6898,6900,6902,6905,6907,6909,6911,6913,6915,6917,6919,6921,6923,6925],{"class":5557,"line":5815},[5555,6891,6892],{"class":5595},"    int",[5555,6894,6895],{"class":5634}," sum",[5555,6897,6348],{"class":5603},[5555,6899,6359],{"class":5616},[5555,6901,5620],{"class":5603},[5555,6903,6904],{"class":5599},"accumulate",[5555,6906,5792],{"class":5603},[5555,6908,6471],{"class":5634},[5555,6910,5428],{"class":5603},[5555,6912,5799],{"class":5599},[5555,6914,5802],{"class":5603},[5555,6916,6471],{"class":5634},[5555,6918,5428],{"class":5603},[5555,6920,5809],{"class":5599},[5555,6922,5802],{"class":5603},[5555,6924,5860],{"class":5641},[5555,6926,5915],{"class":5603},[5555,6928,6929],{"class":5557,"line":5833},[5555,6930,5751],{"class":5603},[5555,6932,6933,6935,6937],{"class":5557,"line":5866},[5555,6934,6113],{"class":5561},[5555,6936,6116],{"class":5641},[5555,6938,5779],{"class":5603},[5555,6940,6941],{"class":5557,"line":5871},[5555,6942,6124],{"class":5603},[5532,6944,6945],{},[5413,6946,6947],{},"Проблеми:",[5406,6949,6950,6960,6969],{},[5409,6951,6952,6953,5645,6956,6959],{},"❌ Дублювання: ",[5425,6954,6955],{},"vec.begin()",[5425,6957,6958],{},"vec.end()"," — легко помилитися",[5409,6961,6962,6963,6965,6966,6968],{},"❌ Неузгодженість: можна передати ",[5425,6964,5491],{}," від одного контейнера, ",[5425,6967,5495],{}," від іншого",[5409,6970,6971],{},"❌ Багатослівність: кожен алгоритм вимагає двох аргументів",[5539,6973,6975],{"id":6974},"c20-range-як-єдина-сутність","C++20: range як єдина сутність",[5544,6977,6980],{"className":5546,"code":6978,"filename":6979,"language":5549,"meta":5550,"style":5551},"#include \u003Cvector>\n#include \u003Cranges>\n#include \u003Calgorithm>\n#include \u003Cnumeric>\n\nint main()\n{\n    std::vector\u003Cint> vec = {1, 2, 3, 4, 5};\n    \n    \u002F\u002F Ranges: передаємо контейнер цілком\n    std::ranges::sort(vec);\n    \n    auto it = std::ranges::find(vec, 3);\n    \n    int sum = std::ranges::fold_left(vec, 0, std::plus{});\n    \n    return 0;\n}\n","RangeApproach.cpp",[5425,6981,6982,6988,6994,7000,7007,7011,7019,7023,7061,7065,7070,7088,7092,7120,7124,7163,7167,7175],{"__ignoreMap":5551},[5555,6983,6984,6986],{"class":5557,"line":5558},[5555,6985,5562],{"class":5561},[5555,6987,5574],{"class":5565},[5555,6989,6990,6992],{"class":5557,"line":5569},[5555,6991,5562],{"class":5561},[5555,6993,6206],{"class":5565},[5555,6995,6996,6998],{"class":5557,"line":5577},[5555,6997,5562],{"class":5561},[5555,6999,5582],{"class":5565},[5555,7001,7002,7004],{"class":5557,"line":5585},[5555,7003,5562],{"class":5561},[5555,7005,7006],{"class":5565}," \u003Cnumeric>\n",[5555,7008,7009],{"class":5557,"line":5592},[5555,7010,5589],{"emptyLinePlaceholder":5588},[5555,7012,7013,7015,7017],{"class":5557,"line":5607},[5555,7014,5596],{"class":5595},[5555,7016,5600],{"class":5599},[5555,7018,5604],{"class":5603},[5555,7020,7021],{"class":5557,"line":5613},[5555,7022,5610],{"class":5603},[5555,7024,7025,7027,7029,7031,7033,7035,7037,7039,7041,7043,7045,7047,7049,7051,7053,7055,7057,7059],{"class":5557,"line":5694},[5555,7026,5617],{"class":5616},[5555,7028,5620],{"class":5603},[5555,7030,5623],{"class":5616},[5555,7032,5626],{"class":5603},[5555,7034,5596],{"class":5595},[5555,7036,5631],{"class":5603},[5555,7038,6471],{"class":5634},[5555,7040,5638],{"class":5603},[5555,7042,5642],{"class":5641},[5555,7044,5645],{"class":5603},[5555,7046,5648],{"class":5641},[5555,7048,5645],{"class":5603},[5555,7050,5653],{"class":5641},[5555,7052,5645],{"class":5603},[5555,7054,5658],{"class":5641},[5555,7056,5645],{"class":5603},[5555,7058,5663],{"class":5641},[5555,7060,5745],{"class":5603},[5555,7062,7063],{"class":5557,"line":5748},[5555,7064,5751],{"class":5603},[5555,7066,7067],{"class":5557,"line":5754},[5555,7068,7069],{"class":5757},"    \u002F\u002F Ranges: передаємо контейнер цілком\n",[5555,7071,7072,7074,7076,7078,7080,7082,7084,7086],{"class":5557,"line":5761},[5555,7073,5617],{"class":5616},[5555,7075,5620],{"class":5603},[5555,7077,6499],{"class":5616},[5555,7079,5620],{"class":5603},[5555,7081,6007],{"class":5599},[5555,7083,5792],{"class":5603},[5555,7085,6471],{"class":5634},[5555,7087,5915],{"class":5603},[5555,7089,7090],{"class":5557,"line":5782},[5555,7091,5751],{"class":5603},[5555,7093,7094,7096,7098,7100,7102,7104,7106,7108,7110,7112,7114,7116,7118],{"class":5557,"line":5815},[5555,7095,6342],{"class":5595},[5555,7097,6852],{"class":5634},[5555,7099,6348],{"class":5603},[5555,7101,6359],{"class":5616},[5555,7103,5620],{"class":5603},[5555,7105,6499],{"class":5616},[5555,7107,5620],{"class":5603},[5555,7109,6861],{"class":5599},[5555,7111,5792],{"class":5603},[5555,7113,6471],{"class":5634},[5555,7115,5645],{"class":5603},[5555,7117,5653],{"class":5641},[5555,7119,5915],{"class":5603},[5555,7121,7122],{"class":5557,"line":5833},[5555,7123,5751],{"class":5603},[5555,7125,7126,7128,7130,7132,7134,7136,7138,7140,7143,7145,7147,7149,7151,7153,7155,7157,7160],{"class":5557,"line":5866},[5555,7127,6892],{"class":5595},[5555,7129,6895],{"class":5634},[5555,7131,6348],{"class":5603},[5555,7133,6359],{"class":5616},[5555,7135,5620],{"class":5603},[5555,7137,6499],{"class":5616},[5555,7139,5620],{"class":5603},[5555,7141,7142],{"class":5599},"fold_left",[5555,7144,5792],{"class":5603},[5555,7146,6471],{"class":5634},[5555,7148,5645],{"class":5603},[5555,7150,5860],{"class":5641},[5555,7152,5645],{"class":5603},[5555,7154,6359],{"class":5616},[5555,7156,5620],{"class":5603},[5555,7158,7159],{"class":5634},"plus",[5555,7161,7162],{"class":5603},"{});\n",[5555,7164,7165],{"class":5557,"line":5871},[5555,7166,5751],{"class":5603},[5555,7168,7169,7171,7173],{"class":5557,"line":5877},[5555,7170,6113],{"class":5561},[5555,7172,6116],{"class":5641},[5555,7174,5779],{"class":5603},[5555,7176,7177],{"class":5557,"line":5900},[5555,7178,6124],{"class":5603},[7180,7181,7182,7199],"tip",{},[5532,7183,7184,7186,7187,5492,7189,7191,7192,6690,7195,7198],{},[5413,7185,6724],{}," — це будь-який об'єкт, що має методи ",[5425,7188,5491],{},[5425,7190,5495],{}," (або вільні функції ",[5425,7193,7194],{},"std::ranges::begin()",[5425,7196,7197],{},"std::ranges::end()","):",[5532,7200,7201,7202,5645,7204,5645,7207,7210,7211,7214,7215,5645,7218,7221,7222,6690,7224],{},"✅ Контейнери STL (",[5425,7203,5623],{},[5425,7205,7206],{},"list",[5425,7208,7209],{},"map",")\n✅ C-масиви\n✅ ",[5425,7212,7213],{},"std::string","\n✅ Views (",[5425,7216,7217],{},"std::views::filter",[5425,7219,7220],{},"std::views::take",")\n✅ Власні класи з ",[5425,7223,5491],{},[5425,7225,5495],{},[5539,7227,7229],{"id":7228},"ієрархія-концептів-ranges","Ієрархія концептів Ranges",[5532,7231,7232,7233,7236],{},"C++20 визначає ",[5413,7234,7235],{},"ієрархію концептів"," для класифікації ranges:",[7238,7239,7241],"plant-uml",{"title":7240},"Концепти Ranges",[5544,7242,7246],{"className":7243,"code":7244,"language":7245,"meta":5551,"style":5551},"language-plantuml shiki shiki-themes light-plus dark-plus dark-plus","@startuml\nskinparam backgroundColor transparent\nskinparam defaultFontName \"JetBrains Mono\"\nskinparam defaultFontSize 13\n\nskinparam class {\n    BackgroundColor #DBEAFE\n    BorderColor #3B82F6\n    ArrowColor #3B82F6\n}\n\nabstract class \"std::ranges::range\" as range {\n    Має begin() та end()\n}\n\nabstract class \"std::ranges::input_range\" as input {\n    Можна читати елементи\n    (один прохід)\n}\n\nabstract class \"std::ranges::forward_range\" as forward {\n    Можна проходити\n    багато разів\n}\n\nabstract class \"std::ranges::bidirectional_range\" as bidir {\n    Можна рухатись\n    у двох напрямках\n}\n\nabstract class \"std::ranges::random_access_range\" as random {\n    Довільний доступ\n    за O(1)\n}\n\nabstract class \"std::ranges::contiguous_range\" as contig {\n    Елементи суцільні\n    в пам'яті\n}\n\nrange \u003C|-- input\ninput \u003C|-- forward\nforward \u003C|-- bidir\nbidir \u003C|-- random\nrandom \u003C|-- contig\n\nnote right of range\n  Базова концепція:\n  будь-яка послідовність\nend note\n\nnote right of contig\n  Найсильніша концепція:\n  std::vector, std::array,\n  C-масиви\nend note\n\n@enduml\n","plantuml",[5425,7247,7248,7253,7258,7263,7268,7272,7277,7282,7287,7292,7296,7300,7305,7310,7314,7318,7323,7328,7333,7337,7341,7346,7351,7356,7360,7364,7369,7374,7379,7383,7387,7392,7397,7402,7407,7412,7418,7424,7430,7435,7440,7446,7452,7458,7464,7470,7475,7481,7487,7493,7499,7504,7510,7516,7522,7528,7533,7538],{"__ignoreMap":5551},[5555,7249,7250],{"class":5557,"line":5558},[5555,7251,7252],{},"@startuml\n",[5555,7254,7255],{"class":5557,"line":5569},[5555,7256,7257],{},"skinparam backgroundColor transparent\n",[5555,7259,7260],{"class":5557,"line":5577},[5555,7261,7262],{},"skinparam defaultFontName \"JetBrains Mono\"\n",[5555,7264,7265],{"class":5557,"line":5585},[5555,7266,7267],{},"skinparam defaultFontSize 13\n",[5555,7269,7270],{"class":5557,"line":5592},[5555,7271,5589],{"emptyLinePlaceholder":5588},[5555,7273,7274],{"class":5557,"line":5607},[5555,7275,7276],{},"skinparam class {\n",[5555,7278,7279],{"class":5557,"line":5613},[5555,7280,7281],{},"    BackgroundColor #DBEAFE\n",[5555,7283,7284],{"class":5557,"line":5694},[5555,7285,7286],{},"    BorderColor #3B82F6\n",[5555,7288,7289],{"class":5557,"line":5748},[5555,7290,7291],{},"    ArrowColor #3B82F6\n",[5555,7293,7294],{"class":5557,"line":5754},[5555,7295,6124],{},[5555,7297,7298],{"class":5557,"line":5761},[5555,7299,5589],{"emptyLinePlaceholder":5588},[5555,7301,7302],{"class":5557,"line":5782},[5555,7303,7304],{},"abstract class \"std::ranges::range\" as range {\n",[5555,7306,7307],{"class":5557,"line":5815},[5555,7308,7309],{},"    Має begin() та end()\n",[5555,7311,7312],{"class":5557,"line":5833},[5555,7313,6124],{},[5555,7315,7316],{"class":5557,"line":5866},[5555,7317,5589],{"emptyLinePlaceholder":5588},[5555,7319,7320],{"class":5557,"line":5871},[5555,7321,7322],{},"abstract class \"std::ranges::input_range\" as input {\n",[5555,7324,7325],{"class":5557,"line":5877},[5555,7326,7327],{},"    Можна читати елементи\n",[5555,7329,7330],{"class":5557,"line":5900},[5555,7331,7332],{},"    (один прохід)\n",[5555,7334,7335],{"class":5557,"line":5918},[5555,7336,6124],{},[5555,7338,7339],{"class":5557,"line":5923},[5555,7340,5589],{"emptyLinePlaceholder":5588},[5555,7342,7343],{"class":5557,"line":5929},[5555,7344,7345],{},"abstract class \"std::ranges::forward_range\" as forward {\n",[5555,7347,7348],{"class":5557,"line":5966},[5555,7349,7350],{},"    Можна проходити\n",[5555,7352,7353],{"class":5557,"line":5989},[5555,7354,7355],{},"    багато разів\n",[5555,7357,7358],{"class":5557,"line":5994},[5555,7359,6124],{},[5555,7361,7362],{"class":5557,"line":6000},[5555,7363,5589],{"emptyLinePlaceholder":5588},[5555,7365,7366],{"class":5557,"line":6029},[5555,7367,7368],{},"abstract class \"std::ranges::bidirectional_range\" as bidir {\n",[5555,7370,7371],{"class":5557,"line":6034},[5555,7372,7373],{},"    Можна рухатись\n",[5555,7375,7376],{"class":5557,"line":6040},[5555,7377,7378],{},"    у двох напрямках\n",[5555,7380,7381],{"class":5557,"line":6059},[5555,7382,6124],{},[5555,7384,7385],{"class":5557,"line":6083},[5555,7386,5589],{"emptyLinePlaceholder":5588},[5555,7388,7389],{"class":5557,"line":6105},[5555,7390,7391],{},"abstract class \"std::ranges::random_access_range\" as random {\n",[5555,7393,7394],{"class":5557,"line":6110},[5555,7395,7396],{},"    Довільний доступ\n",[5555,7398,7399],{"class":5557,"line":6121},[5555,7400,7401],{},"    за O(1)\n",[5555,7403,7405],{"class":5557,"line":7404},34,[5555,7406,6124],{},[5555,7408,7410],{"class":5557,"line":7409},35,[5555,7411,5589],{"emptyLinePlaceholder":5588},[5555,7413,7415],{"class":5557,"line":7414},36,[5555,7416,7417],{},"abstract class \"std::ranges::contiguous_range\" as contig {\n",[5555,7419,7421],{"class":5557,"line":7420},37,[5555,7422,7423],{},"    Елементи суцільні\n",[5555,7425,7427],{"class":5557,"line":7426},38,[5555,7428,7429],{},"    в пам'яті\n",[5555,7431,7433],{"class":5557,"line":7432},39,[5555,7434,6124],{},[5555,7436,7438],{"class":5557,"line":7437},40,[5555,7439,5589],{"emptyLinePlaceholder":5588},[5555,7441,7443],{"class":5557,"line":7442},41,[5555,7444,7445],{},"range \u003C|-- input\n",[5555,7447,7449],{"class":5557,"line":7448},42,[5555,7450,7451],{},"input \u003C|-- forward\n",[5555,7453,7455],{"class":5557,"line":7454},43,[5555,7456,7457],{},"forward \u003C|-- bidir\n",[5555,7459,7461],{"class":5557,"line":7460},44,[5555,7462,7463],{},"bidir \u003C|-- random\n",[5555,7465,7467],{"class":5557,"line":7466},45,[5555,7468,7469],{},"random \u003C|-- contig\n",[5555,7471,7473],{"class":5557,"line":7472},46,[5555,7474,5589],{"emptyLinePlaceholder":5588},[5555,7476,7478],{"class":5557,"line":7477},47,[5555,7479,7480],{},"note right of range\n",[5555,7482,7484],{"class":5557,"line":7483},48,[5555,7485,7486],{},"  Базова концепція:\n",[5555,7488,7490],{"class":5557,"line":7489},49,[5555,7491,7492],{},"  будь-яка послідовність\n",[5555,7494,7496],{"class":5557,"line":7495},50,[5555,7497,7498],{},"end note\n",[5555,7500,7502],{"class":5557,"line":7501},51,[5555,7503,5589],{"emptyLinePlaceholder":5588},[5555,7505,7507],{"class":5557,"line":7506},52,[5555,7508,7509],{},"note right of contig\n",[5555,7511,7513],{"class":5557,"line":7512},53,[5555,7514,7515],{},"  Найсильніша концепція:\n",[5555,7517,7519],{"class":5557,"line":7518},54,[5555,7520,7521],{},"  std::vector, std::array,\n",[5555,7523,7525],{"class":5557,"line":7524},55,[5555,7526,7527],{},"  C-масиви\n",[5555,7529,7531],{"class":5557,"line":7530},56,[5555,7532,7498],{},[5555,7534,7536],{"class":5557,"line":7535},57,[5555,7537,5589],{"emptyLinePlaceholder":5588},[5555,7539,7541],{"class":5557,"line":7540},58,[5555,7542,7543],{},"@enduml\n",[5532,7545,7546],{},[5413,7547,7548],{},"Приклади контейнерів за концептами:",[7550,7551,7552,7569],"table",{},[7553,7554,7555],"thead",{},[7556,7557,7558,7563,7566],"tr",{},[7559,7560,7562],"th",{"align":7561},"left","Концепт",[7559,7564,7565],{"align":7561},"Приклади",[7559,7567,7568],{"align":7561},"Операції",[7570,7571,7572,7590,7607,7629,7653],"tbody",{},[7556,7573,7574,7580,7583],{},[7575,7576,7577],"td",{"align":7561},[5425,7578,7579],{},"input_range",[7575,7581,7582],{"align":7561},"Input stream",[7575,7584,7585,7586,7589],{"align":7561},"Читання, ",[5425,7587,7588],{},"++"," (один прохід)",[7556,7591,7592,7597,7602],{},[7575,7593,7594],{"align":7561},[5425,7595,7596],{},"forward_range",[7575,7598,7599],{"align":7561},[5425,7600,7601],{},"std::forward_list",[7575,7603,7585,7604,7606],{"align":7561},[5425,7605,7588],{}," (багато проходів)",[7556,7608,7609,7614,7622],{},[7575,7610,7611],{"align":7561},[5425,7612,7613],{},"bidirectional_range",[7575,7615,7616,5645,7619],{"align":7561},[5425,7617,7618],{},"std::list",[5425,7620,7621],{},"std::set",[7575,7623,7585,7624,5645,7626],{"align":7561},[5425,7625,7588],{},[5425,7627,7628],{},"--",[7556,7630,7631,7636,7641],{},[7575,7632,7633],{"align":7561},[5425,7634,7635],{},"random_access_range",[7575,7637,7638],{"align":7561},[5425,7639,7640],{},"std::deque",[7575,7642,7585,7643,5645,7645,5645,7647,5645,7650],{"align":7561},[5425,7644,7588],{},[5425,7646,7628],{},[5425,7648,7649],{},"+n",[5425,7651,7652],{},"-n",[7556,7654,7655,7660,7668],{},[7575,7656,7657],{"align":7561},[5425,7658,7659],{},"contiguous_range",[7575,7661,7662,5645,7665],{"align":7561},[5425,7663,7664],{},"std::vector",[5425,7666,7667],{},"std::array",[7575,7669,7670,7671],{"align":7561},"Суцільна пам'ять, ",[5425,7672,7673],{},"data()",[5524,7675],{},[5527,7677,7679],{"id":7678},"views-ледачі-адаптори-діапазонів","Views: ледачі адаптори діапазонів",[5532,7681,7682,5439,7685,7688,7689,7692],{},[5413,7683,7684],{},"View",[5441,7686,7687],{},"представлення",") — це ",[5413,7690,7691],{},"легковаговий адаптор"," range, що:",[5406,7694,7695,7702,7709,7718],{},[5409,7696,7697,7698,7701],{},"❌ ",[5413,7699,7700],{},"Не володіє"," даними (не копіює елементи)",[5409,7703,7704,7705,7708],{},"✅ ",[5413,7706,7707],{},"Трансформує"," представлення вихідного діапазону",[5409,7710,7711,7712,5439,7715,7717],{},"⚡ ",[5413,7713,7714],{},"Ледачо обчислюється",[5441,7716,5443],{},") — робота виконується під час ітерації",[5409,7719,7720,7721,7724,7725],{},"🔄 ",[5413,7722,7723],{},"Композується"," — views можна об'єднувати через ",[5425,7726,5454],{},[5539,7728,7730,7731],{"id":7729},"базовий-приклад-stdviewsfilter","Базовий приклад: ",[5425,7732,7217],{},[5544,7734,7737],{"className":5546,"code":7735,"filename":7736,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Cranges>\n\nint main()\n{\n    std::vector\u003Cint> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n    \n    \u002F\u002F Створюємо view парних чисел\n    auto evens = numbers | std::views::filter([](int n) { return n % 2 == 0; });\n    \n    std::cout \u003C\u003C \"Evens: \";\n    for (int n : evens)\n        std::cout \u003C\u003C n \u003C\u003C \" \";\n    std::cout \u003C\u003C \"\\n\";\n    \n    \u002F\u002F Змінимо вихідний вектор\n    numbers.push_back(12);\n    \n    std::cout \u003C\u003C \"After push_back: \";\n    for (int n : evens)\n        std::cout \u003C\u003C n \u003C\u003C \" \";\n    std::cout \u003C\u003C \"\\n\";\n    \n    return 0;\n}\n","FilterView.cpp",[5425,7738,7739,7745,7751,7757,7761,7769,7773,7831,7835,7840,7886,7890,7905,7921,7939,7957,7961,7966,7982,7986,8001,8017,8035,8053,8057,8065],{"__ignoreMap":5551},[5555,7740,7741,7743],{"class":5557,"line":5558},[5555,7742,5562],{"class":5561},[5555,7744,5566],{"class":5565},[5555,7746,7747,7749],{"class":5557,"line":5569},[5555,7748,5562],{"class":5561},[5555,7750,5574],{"class":5565},[5555,7752,7753,7755],{"class":5557,"line":5577},[5555,7754,5562],{"class":5561},[5555,7756,6206],{"class":5565},[5555,7758,7759],{"class":5557,"line":5585},[5555,7760,5589],{"emptyLinePlaceholder":5588},[5555,7762,7763,7765,7767],{"class":5557,"line":5592},[5555,7764,5596],{"class":5595},[5555,7766,5600],{"class":5599},[5555,7768,5604],{"class":5603},[5555,7770,7771],{"class":5557,"line":5607},[5555,7772,5610],{"class":5603},[5555,7774,7775,7777,7779,7781,7783,7785,7787,7789,7791,7793,7795,7797,7799,7801,7803,7805,7807,7809,7811,7813,7815,7817,7819,7821,7823,7825,7827,7829],{"class":5557,"line":5613},[5555,7776,5617],{"class":5616},[5555,7778,5620],{"class":5603},[5555,7780,5623],{"class":5616},[5555,7782,5626],{"class":5603},[5555,7784,5596],{"class":5595},[5555,7786,5631],{"class":5603},[5555,7788,5635],{"class":5634},[5555,7790,5638],{"class":5603},[5555,7792,5642],{"class":5641},[5555,7794,5645],{"class":5603},[5555,7796,5648],{"class":5641},[5555,7798,5645],{"class":5603},[5555,7800,5653],{"class":5641},[5555,7802,5645],{"class":5603},[5555,7804,5658],{"class":5641},[5555,7806,5645],{"class":5603},[5555,7808,5663],{"class":5641},[5555,7810,5645],{"class":5603},[5555,7812,5668],{"class":5641},[5555,7814,5645],{"class":5603},[5555,7816,5673],{"class":5641},[5555,7818,5645],{"class":5603},[5555,7820,5678],{"class":5641},[5555,7822,5645],{"class":5603},[5555,7824,5683],{"class":5641},[5555,7826,5645],{"class":5603},[5555,7828,5688],{"class":5641},[5555,7830,5745],{"class":5603},[5555,7832,7833],{"class":5557,"line":5694},[5555,7834,5751],{"class":5603},[5555,7836,7837],{"class":5557,"line":5748},[5555,7838,7839],{"class":5757},"    \u002F\u002F Створюємо view парних чисел\n",[5555,7841,7842,7844,7847,7849,7851,7854,7856,7858,7860,7862,7864,7866,7868,7870,7872,7874,7876,7878,7880,7882,7884],{"class":5557,"line":5754},[5555,7843,6342],{"class":5595},[5555,7845,7846],{"class":5634}," evens",[5555,7848,6348],{"class":5603},[5555,7850,5635],{"class":5634},[5555,7852,7853],{"class":5603}," | ",[5555,7855,6359],{"class":5616},[5555,7857,5620],{"class":5603},[5555,7859,5434],{"class":5616},[5555,7861,5620],{"class":5603},[5555,7863,6368],{"class":5599},[5555,7865,6371],{"class":5603},[5555,7867,5596],{"class":5595},[5555,7869,5841],{"class":5634},[5555,7871,5844],{"class":5603},[5555,7873,5847],{"class":5561},[5555,7875,5841],{"class":5634},[5555,7877,5852],{"class":5603},[5555,7879,5648],{"class":5641},[5555,7881,5857],{"class":5603},[5555,7883,5860],{"class":5641},[5555,7885,5863],{"class":5603},[5555,7887,7888],{"class":5557,"line":5761},[5555,7889,5751],{"class":5603},[5555,7891,7892,7894,7896,7898,7900,7903],{"class":5557,"line":5782},[5555,7893,5617],{"class":5616},[5555,7895,5620],{"class":5603},[5555,7897,6067],{"class":5634},[5555,7899,6070],{"class":5603},[5555,7901,7902],{"class":5565},"\"Evens: \"",[5555,7904,5779],{"class":5603},[5555,7906,7907,7909,7911,7913,7915,7917,7919],{"class":5557,"line":5815},[5555,7908,6043],{"class":5561},[5555,7910,5439],{"class":5603},[5555,7912,5596],{"class":5595},[5555,7914,5841],{"class":5634},[5555,7916,6052],{"class":5603},[5555,7918,5776],{"class":5634},[5555,7920,5897],{"class":5603},[5555,7922,7923,7925,7927,7929,7931,7933,7935,7937],{"class":5557,"line":5833},[5555,7924,6062],{"class":5616},[5555,7926,5620],{"class":5603},[5555,7928,6067],{"class":5634},[5555,7930,6070],{"class":5603},[5555,7932,6073],{"class":5634},[5555,7934,6070],{"class":5603},[5555,7936,6078],{"class":5565},[5555,7938,5779],{"class":5603},[5555,7940,7941,7943,7945,7947,7949,7951,7953,7955],{"class":5557,"line":5866},[5555,7942,5617],{"class":5616},[5555,7944,5620],{"class":5603},[5555,7946,6067],{"class":5634},[5555,7948,6070],{"class":5603},[5555,7950,6094],{"class":5565},[5555,7952,6098],{"class":6097},[5555,7954,6094],{"class":5565},[5555,7956,5779],{"class":5603},[5555,7958,7959],{"class":5557,"line":5871},[5555,7960,5751],{"class":5603},[5555,7962,7963],{"class":5557,"line":5877},[5555,7964,7965],{"class":5757},"    \u002F\u002F Змінимо вихідний вектор\n",[5555,7967,7968,7971,7973,7976,7978,7980],{"class":5557,"line":5900},[5555,7969,7970],{"class":5634},"    numbers",[5555,7972,5428],{"class":5603},[5555,7974,7975],{"class":5599},"push_back",[5555,7977,5792],{"class":5603},[5555,7979,5702],{"class":5641},[5555,7981,5915],{"class":5603},[5555,7983,7984],{"class":5557,"line":5918},[5555,7985,5751],{"class":5603},[5555,7987,7988,7990,7992,7994,7996,7999],{"class":5557,"line":5923},[5555,7989,5617],{"class":5616},[5555,7991,5620],{"class":5603},[5555,7993,6067],{"class":5634},[5555,7995,6070],{"class":5603},[5555,7997,7998],{"class":5565},"\"After push_back: \"",[5555,8000,5779],{"class":5603},[5555,8002,8003,8005,8007,8009,8011,8013,8015],{"class":5557,"line":5929},[5555,8004,6043],{"class":5561},[5555,8006,5439],{"class":5603},[5555,8008,5596],{"class":5595},[5555,8010,5841],{"class":5634},[5555,8012,6052],{"class":5603},[5555,8014,5776],{"class":5634},[5555,8016,5897],{"class":5603},[5555,8018,8019,8021,8023,8025,8027,8029,8031,8033],{"class":5557,"line":5966},[5555,8020,6062],{"class":5616},[5555,8022,5620],{"class":5603},[5555,8024,6067],{"class":5634},[5555,8026,6070],{"class":5603},[5555,8028,6073],{"class":5634},[5555,8030,6070],{"class":5603},[5555,8032,6078],{"class":5565},[5555,8034,5779],{"class":5603},[5555,8036,8037,8039,8041,8043,8045,8047,8049,8051],{"class":5557,"line":5989},[5555,8038,5617],{"class":5616},[5555,8040,5620],{"class":5603},[5555,8042,6067],{"class":5634},[5555,8044,6070],{"class":5603},[5555,8046,6094],{"class":5565},[5555,8048,6098],{"class":6097},[5555,8050,6094],{"class":5565},[5555,8052,5779],{"class":5603},[5555,8054,8055],{"class":5557,"line":5994},[5555,8056,5751],{"class":5603},[5555,8058,8059,8061,8063],{"class":5557,"line":6000},[5555,8060,6113],{"class":5561},[5555,8062,6116],{"class":5641},[5555,8064,5779],{"class":5603},[5555,8066,8067],{"class":5557,"line":6029},[5555,8068,6124],{"class":5603},[6587,8070,8072,8076],{"title":8071},".\u002FFilterView",[6591,8073,8075],{"className":8074},[5557],"Evens: 2 4 6 8 10",[6591,8077,8079],{"className":8078},[5557],"After push_back: 2 4 6 8 10 12",[8081,8082,8083,8096],"caution",{},[5532,8084,8085,8088,8089,8092,8093,5428],{},[5413,8086,8087],{},"View НЕ копіює дані!"," Він зберігає ",[5413,8090,8091],{},"посилання"," на вихідний range. Якщо вихідний контейнер знищується або інвалідується, view стає ",[5413,8094,8095],{},"невалідним",[5544,8097,8099],{"className":5546,"code":8098,"language":5549,"meta":5551,"style":5551},"auto createView()\n{\n    std::vector\u003Cint> local = {1, 2, 3};\n    return local | std::views::filter([](int n) { return n > 1; });\n}  \u002F\u002F ❌ local знищується → view висить у повітрі!\n\nauto view = createView();\n\u002F\u002F Невизначена поведінка при використанні view\n",[5425,8100,8101,8111,8115,8146,8184,8192,8196,8211],{"__ignoreMap":5551},[5555,8102,8103,8106,8109],{"class":5557,"line":5558},[5555,8104,8105],{"class":5595},"auto",[5555,8107,8108],{"class":5599}," createView",[5555,8110,5604],{"class":5603},[5555,8112,8113],{"class":5557,"line":5569},[5555,8114,5610],{"class":5603},[5555,8116,8117,8119,8121,8123,8125,8127,8129,8132,8134,8136,8138,8140,8142,8144],{"class":5557,"line":5577},[5555,8118,5617],{"class":5616},[5555,8120,5620],{"class":5603},[5555,8122,5623],{"class":5616},[5555,8124,5626],{"class":5603},[5555,8126,5596],{"class":5595},[5555,8128,5631],{"class":5603},[5555,8130,8131],{"class":5634},"local",[5555,8133,5638],{"class":5603},[5555,8135,5642],{"class":5641},[5555,8137,5645],{"class":5603},[5555,8139,5648],{"class":5641},[5555,8141,5645],{"class":5603},[5555,8143,5653],{"class":5641},[5555,8145,5745],{"class":5603},[5555,8147,8148,8150,8153,8155,8157,8159,8161,8163,8165,8167,8169,8171,8173,8175,8177,8180,8182],{"class":5557,"line":5585},[5555,8149,6113],{"class":5561},[5555,8151,8152],{"class":5634}," local",[5555,8154,7853],{"class":5603},[5555,8156,6359],{"class":5616},[5555,8158,5620],{"class":5603},[5555,8160,5434],{"class":5616},[5555,8162,5620],{"class":5603},[5555,8164,6368],{"class":5599},[5555,8166,6371],{"class":5603},[5555,8168,5596],{"class":5595},[5555,8170,5841],{"class":5634},[5555,8172,5844],{"class":5603},[5555,8174,5847],{"class":5561},[5555,8176,5841],{"class":5634},[5555,8178,8179],{"class":5603}," > ",[5555,8181,5642],{"class":5641},[5555,8183,5863],{"class":5603},[5555,8185,8186,8189],{"class":5557,"line":5592},[5555,8187,8188],{"class":5603},"}",[5555,8190,8191],{"class":5757},"  \u002F\u002F ❌ local знищується → view висить у повітрі!\n",[5555,8193,8194],{"class":5557,"line":5607},[5555,8195,5589],{"emptyLinePlaceholder":5588},[5555,8197,8198,8200,8203,8205,8208],{"class":5557,"line":5613},[5555,8199,8105],{"class":5595},[5555,8201,8202],{"class":5634}," view",[5555,8204,6348],{"class":5603},[5555,8206,8207],{"class":5599},"createView",[5555,8209,8210],{"class":5603},"();\n",[5555,8212,8213],{"class":5557,"line":5694},[5555,8214,8215],{"class":5757},"\u002F\u002F Невизначена поведінка при використанні view\n",[5539,8217,8219],{"id":8218},"анатомія-view","Анатомія view",[7238,8221,8223],{"title":8222},"View vs Container",[5544,8224,8226],{"className":7243,"code":8225,"language":7245,"meta":5551,"style":5551},"@startuml\nskinparam backgroundColor transparent\nskinparam defaultFontName \"JetBrains Mono\"\nskinparam defaultFontSize 12\n\npackage \"Container (std::vector)\" {\n    rectangle \"Data\\n[1, 2, 3, 4, 5, 6]\" as data #10B981\n}\n\npackage \"View (filter парних)\" {\n    rectangle \"Предикат\\n[n % 2 == 0]\" as pred #F59E0B\n    rectangle \"Посилання\\nна vector\" as ref #3B82F6\n}\n\ndata \u003C.. ref : спостерігає\n\nnote right of data\n  Контейнер ВОЛОДІЄ даними\n  Виділяє пам'ять\n  Зберігає елементи\nend note\n\nnote right of pred\n  View НЕ володіє даними\n  Лише зберігає логіку трансформації\n  Обчислення при ітерації\nend note\n\n@enduml\n",[5425,8227,8228,8232,8236,8240,8245,8249,8254,8259,8263,8267,8272,8277,8282,8286,8290,8295,8299,8304,8309,8314,8319,8323,8327,8332,8337,8342,8347,8351,8355],{"__ignoreMap":5551},[5555,8229,8230],{"class":5557,"line":5558},[5555,8231,7252],{},[5555,8233,8234],{"class":5557,"line":5569},[5555,8235,7257],{},[5555,8237,8238],{"class":5557,"line":5577},[5555,8239,7262],{},[5555,8241,8242],{"class":5557,"line":5585},[5555,8243,8244],{},"skinparam defaultFontSize 12\n",[5555,8246,8247],{"class":5557,"line":5592},[5555,8248,5589],{"emptyLinePlaceholder":5588},[5555,8250,8251],{"class":5557,"line":5607},[5555,8252,8253],{},"package \"Container (std::vector)\" {\n",[5555,8255,8256],{"class":5557,"line":5613},[5555,8257,8258],{},"    rectangle \"Data\\n[1, 2, 3, 4, 5, 6]\" as data #10B981\n",[5555,8260,8261],{"class":5557,"line":5694},[5555,8262,6124],{},[5555,8264,8265],{"class":5557,"line":5748},[5555,8266,5589],{"emptyLinePlaceholder":5588},[5555,8268,8269],{"class":5557,"line":5754},[5555,8270,8271],{},"package \"View (filter парних)\" {\n",[5555,8273,8274],{"class":5557,"line":5761},[5555,8275,8276],{},"    rectangle \"Предикат\\n[n % 2 == 0]\" as pred #F59E0B\n",[5555,8278,8279],{"class":5557,"line":5782},[5555,8280,8281],{},"    rectangle \"Посилання\\nна vector\" as ref #3B82F6\n",[5555,8283,8284],{"class":5557,"line":5815},[5555,8285,6124],{},[5555,8287,8288],{"class":5557,"line":5833},[5555,8289,5589],{"emptyLinePlaceholder":5588},[5555,8291,8292],{"class":5557,"line":5866},[5555,8293,8294],{},"data \u003C.. ref : спостерігає\n",[5555,8296,8297],{"class":5557,"line":5871},[5555,8298,5589],{"emptyLinePlaceholder":5588},[5555,8300,8301],{"class":5557,"line":5877},[5555,8302,8303],{},"note right of data\n",[5555,8305,8306],{"class":5557,"line":5900},[5555,8307,8308],{},"  Контейнер ВОЛОДІЄ даними\n",[5555,8310,8311],{"class":5557,"line":5918},[5555,8312,8313],{},"  Виділяє пам'ять\n",[5555,8315,8316],{"class":5557,"line":5923},[5555,8317,8318],{},"  Зберігає елементи\n",[5555,8320,8321],{"class":5557,"line":5929},[5555,8322,7498],{},[5555,8324,8325],{"class":5557,"line":5966},[5555,8326,5589],{"emptyLinePlaceholder":5588},[5555,8328,8329],{"class":5557,"line":5989},[5555,8330,8331],{},"note right of pred\n",[5555,8333,8334],{"class":5557,"line":5994},[5555,8335,8336],{},"  View НЕ володіє даними\n",[5555,8338,8339],{"class":5557,"line":6000},[5555,8340,8341],{},"  Лише зберігає логіку трансформації\n",[5555,8343,8344],{"class":5557,"line":6029},[5555,8345,8346],{},"  Обчислення при ітерації\n",[5555,8348,8349],{"class":5557,"line":6034},[5555,8350,7498],{},[5555,8352,8353],{"class":5557,"line":6040},[5555,8354,5589],{"emptyLinePlaceholder":5588},[5555,8356,8357],{"class":5557,"line":6059},[5555,8358,7543],{},[5524,8360],{},[5527,8362,8364],{"id":8363},"категорії-views","Категорії Views",[5532,8366,8367,8368,8371],{},"C++20 надає ",[5413,8369,8370],{},"три категорії"," views:",[5539,8373,8375,8376,8379],{"id":8374},"_1️⃣-factory-views-створюють-діапазони-з-нічого","1️⃣ ",[5413,8377,8378],{},"Factory Views"," — створюють діапазони з нічого",[5398,8381,8382,8423,8464,8542],{},[5401,8383,8386],{"icon":8384,"title":8385},"i-lucide-circle-slash","`views::empty`",[5544,8387,8389],{"className":5546,"code":8388,"language":5549,"meta":5551,"style":5551},"auto empty = std::views::empty\u003Cint>;\n\u002F\u002F Порожній діапазон типу int\n",[5425,8390,8391,8418],{"__ignoreMap":5551},[5555,8392,8393,8395,8398,8400,8402,8404,8406,8408,8411,8413,8415],{"class":5557,"line":5558},[5555,8394,8105],{"class":5595},[5555,8396,8397],{"class":5634}," empty",[5555,8399,6348],{"class":5603},[5555,8401,6359],{"class":5616},[5555,8403,5620],{"class":5603},[5555,8405,5434],{"class":5616},[5555,8407,5620],{"class":5603},[5555,8409,8410],{"class":5634},"empty",[5555,8412,5626],{"class":5603},[5555,8414,5596],{"class":5595},[5555,8416,8417],{"class":5603},">;\n",[5555,8419,8420],{"class":5557,"line":5569},[5555,8421,8422],{"class":5757},"\u002F\u002F Порожній діапазон типу int\n",[5401,8424,8427],{"icon":8425,"title":8426},"i-lucide-circle-dot","`views::single`",[5544,8428,8430],{"className":5546,"code":8429,"language":5549,"meta":5551,"style":5551},"auto one = std::views::single(42);\n\u002F\u002F Діапазон з одного елемента\n",[5425,8431,8432,8459],{"__ignoreMap":5551},[5555,8433,8434,8436,8439,8441,8443,8445,8447,8449,8452,8454,8457],{"class":5557,"line":5558},[5555,8435,8105],{"class":5595},[5555,8437,8438],{"class":5634}," one",[5555,8440,6348],{"class":5603},[5555,8442,6359],{"class":5616},[5555,8444,5620],{"class":5603},[5555,8446,5434],{"class":5616},[5555,8448,5620],{"class":5603},[5555,8450,8451],{"class":5599},"single",[5555,8453,5792],{"class":5603},[5555,8455,8456],{"class":5641},"42",[5555,8458,5915],{"class":5603},[5555,8460,8461],{"class":5557,"line":5569},[5555,8462,8463],{"class":5757},"\u002F\u002F Діапазон з одного елемента\n",[5401,8465,8468],{"icon":8466,"title":8467},"i-lucide-hash","`views::iota`",[5544,8469,8471],{"className":5546,"code":8470,"language":5549,"meta":5551,"style":5551},"auto infinite = std::views::iota(1);\n\u002F\u002F 1, 2, 3, 4, ... (нескінченний!)\n\nauto range = std::views::iota(1, 10);\n\u002F\u002F 1, 2, 3, ..., 9\n",[5425,8472,8473,8499,8504,8508,8537],{"__ignoreMap":5551},[5555,8474,8475,8477,8480,8482,8484,8486,8488,8490,8493,8495,8497],{"class":5557,"line":5558},[5555,8476,8105],{"class":5595},[5555,8478,8479],{"class":5634}," infinite",[5555,8481,6348],{"class":5603},[5555,8483,6359],{"class":5616},[5555,8485,5620],{"class":5603},[5555,8487,5434],{"class":5616},[5555,8489,5620],{"class":5603},[5555,8491,8492],{"class":5599},"iota",[5555,8494,5792],{"class":5603},[5555,8496,5642],{"class":5641},[5555,8498,5915],{"class":5603},[5555,8500,8501],{"class":5557,"line":5569},[5555,8502,8503],{"class":5757},"\u002F\u002F 1, 2, 3, 4, ... (нескінченний!)\n",[5555,8505,8506],{"class":5557,"line":5577},[5555,8507,5589],{"emptyLinePlaceholder":5588},[5555,8509,8510,8512,8515,8517,8519,8521,8523,8525,8527,8529,8531,8533,8535],{"class":5557,"line":5585},[5555,8511,8105],{"class":5595},[5555,8513,8514],{"class":5634}," range",[5555,8516,6348],{"class":5603},[5555,8518,6359],{"class":5616},[5555,8520,5620],{"class":5603},[5555,8522,5434],{"class":5616},[5555,8524,5620],{"class":5603},[5555,8526,8492],{"class":5599},[5555,8528,5792],{"class":5603},[5555,8530,5642],{"class":5641},[5555,8532,5645],{"class":5603},[5555,8534,5688],{"class":5641},[5555,8536,5915],{"class":5603},[5555,8538,8539],{"class":5557,"line":5592},[5555,8540,8541],{"class":5757},"\u002F\u002F 1, 2, 3, ..., 9\n",[5401,8543,8546],{"icon":8544,"title":8545},"i-lucide-repeat","`views::repeat`",[5544,8547,8549],{"className":5546,"code":8548,"language":5549,"meta":5551,"style":5551},"auto fives = std::views::repeat(5);\n\u002F\u002F 5, 5, 5, 5, ... (нескінченний!)\n\nauto ten = std::views::repeat(5, 10);\n\u002F\u002F 5, 5, 5, 5, 5, 5, 5, 5, 5, 5\n",[5425,8550,8551,8577,8582,8586,8615],{"__ignoreMap":5551},[5555,8552,8553,8555,8558,8560,8562,8564,8566,8568,8571,8573,8575],{"class":5557,"line":5558},[5555,8554,8105],{"class":5595},[5555,8556,8557],{"class":5634}," fives",[5555,8559,6348],{"class":5603},[5555,8561,6359],{"class":5616},[5555,8563,5620],{"class":5603},[5555,8565,5434],{"class":5616},[5555,8567,5620],{"class":5603},[5555,8569,8570],{"class":5599},"repeat",[5555,8572,5792],{"class":5603},[5555,8574,5663],{"class":5641},[5555,8576,5915],{"class":5603},[5555,8578,8579],{"class":5557,"line":5569},[5555,8580,8581],{"class":5757},"\u002F\u002F 5, 5, 5, 5, ... (нескінченний!)\n",[5555,8583,8584],{"class":5557,"line":5577},[5555,8585,5589],{"emptyLinePlaceholder":5588},[5555,8587,8588,8590,8593,8595,8597,8599,8601,8603,8605,8607,8609,8611,8613],{"class":5557,"line":5585},[5555,8589,8105],{"class":5595},[5555,8591,8592],{"class":5634}," ten",[5555,8594,6348],{"class":5603},[5555,8596,6359],{"class":5616},[5555,8598,5620],{"class":5603},[5555,8600,5434],{"class":5616},[5555,8602,5620],{"class":5603},[5555,8604,8570],{"class":5599},[5555,8606,5792],{"class":5603},[5555,8608,5663],{"class":5641},[5555,8610,5645],{"class":5603},[5555,8612,5688],{"class":5641},[5555,8614,5915],{"class":5603},[5555,8616,8617],{"class":5557,"line":5592},[5555,8618,8619],{"class":5757},"\u002F\u002F 5, 5, 5, 5, 5, 5, 5, 5, 5, 5\n",[5532,8621,8622],{},[5413,8623,8624],{},"Приклад:",[5544,8626,8629],{"className":5546,"code":8627,"filename":8628,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cranges>\n\nint main()\n{\n    \u002F\u002F Числа від 1 до 10\n    for (int n : std::views::iota(1, 11))\n        std::cout \u003C\u003C n \u003C\u003C \" \";\n    std::cout \u003C\u003C \"\\n\";\n    \n    \u002F\u002F Перші 5 квадратів\n    for (int n : std::views::iota(1) | std::views::take(5))\n        std::cout \u003C\u003C n * n \u003C\u003C \" \";\n    std::cout \u003C\u003C \"\\n\";\n    \n    return 0;\n}\n","FactoryViews.cpp",[5425,8630,8631,8637,8643,8647,8655,8659,8664,8698,8716,8734,8738,8743,8788,8810,8828,8832,8840],{"__ignoreMap":5551},[5555,8632,8633,8635],{"class":5557,"line":5558},[5555,8634,5562],{"class":5561},[5555,8636,5566],{"class":5565},[5555,8638,8639,8641],{"class":5557,"line":5569},[5555,8640,5562],{"class":5561},[5555,8642,6206],{"class":5565},[5555,8644,8645],{"class":5557,"line":5577},[5555,8646,5589],{"emptyLinePlaceholder":5588},[5555,8648,8649,8651,8653],{"class":5557,"line":5585},[5555,8650,5596],{"class":5595},[5555,8652,5600],{"class":5599},[5555,8654,5604],{"class":5603},[5555,8656,8657],{"class":5557,"line":5592},[5555,8658,5610],{"class":5603},[5555,8660,8661],{"class":5557,"line":5607},[5555,8662,8663],{"class":5757},"    \u002F\u002F Числа від 1 до 10\n",[5555,8665,8666,8668,8670,8672,8674,8676,8678,8680,8682,8684,8686,8688,8690,8692,8695],{"class":5557,"line":5613},[5555,8667,6043],{"class":5561},[5555,8669,5439],{"class":5603},[5555,8671,5596],{"class":5595},[5555,8673,5841],{"class":5634},[5555,8675,6052],{"class":5603},[5555,8677,6359],{"class":5616},[5555,8679,5620],{"class":5603},[5555,8681,5434],{"class":5616},[5555,8683,5620],{"class":5603},[5555,8685,8492],{"class":5599},[5555,8687,5792],{"class":5603},[5555,8689,5642],{"class":5641},[5555,8691,5645],{"class":5603},[5555,8693,8694],{"class":5641},"11",[5555,8696,8697],{"class":5603},"))\n",[5555,8699,8700,8702,8704,8706,8708,8710,8712,8714],{"class":5557,"line":5694},[5555,8701,6062],{"class":5616},[5555,8703,5620],{"class":5603},[5555,8705,6067],{"class":5634},[5555,8707,6070],{"class":5603},[5555,8709,6073],{"class":5634},[5555,8711,6070],{"class":5603},[5555,8713,6078],{"class":5565},[5555,8715,5779],{"class":5603},[5555,8717,8718,8720,8722,8724,8726,8728,8730,8732],{"class":5557,"line":5748},[5555,8719,5617],{"class":5616},[5555,8721,5620],{"class":5603},[5555,8723,6067],{"class":5634},[5555,8725,6070],{"class":5603},[5555,8727,6094],{"class":5565},[5555,8729,6098],{"class":6097},[5555,8731,6094],{"class":5565},[5555,8733,5779],{"class":5603},[5555,8735,8736],{"class":5557,"line":5754},[5555,8737,5751],{"class":5603},[5555,8739,8740],{"class":5557,"line":5761},[5555,8741,8742],{"class":5757},"    \u002F\u002F Перші 5 квадратів\n",[5555,8744,8745,8747,8749,8751,8753,8755,8757,8759,8761,8763,8765,8767,8769,8772,8774,8776,8778,8780,8782,8784,8786],{"class":5557,"line":5782},[5555,8746,6043],{"class":5561},[5555,8748,5439],{"class":5603},[5555,8750,5596],{"class":5595},[5555,8752,5841],{"class":5634},[5555,8754,6052],{"class":5603},[5555,8756,6359],{"class":5616},[5555,8758,5620],{"class":5603},[5555,8760,5434],{"class":5616},[5555,8762,5620],{"class":5603},[5555,8764,8492],{"class":5599},[5555,8766,5792],{"class":5603},[5555,8768,5642],{"class":5641},[5555,8770,8771],{"class":5603},") | ",[5555,8773,6359],{"class":5616},[5555,8775,5620],{"class":5603},[5555,8777,5434],{"class":5616},[5555,8779,5620],{"class":5603},[5555,8781,6407],{"class":5599},[5555,8783,5792],{"class":5603},[5555,8785,5663],{"class":5641},[5555,8787,8697],{"class":5603},[5555,8789,8790,8792,8794,8796,8798,8800,8802,8804,8806,8808],{"class":5557,"line":5815},[5555,8791,6062],{"class":5616},[5555,8793,5620],{"class":5603},[5555,8795,6067],{"class":5634},[5555,8797,6070],{"class":5603},[5555,8799,6073],{"class":5634},[5555,8801,5982],{"class":5603},[5555,8803,6073],{"class":5634},[5555,8805,6070],{"class":5603},[5555,8807,6078],{"class":5565},[5555,8809,5779],{"class":5603},[5555,8811,8812,8814,8816,8818,8820,8822,8824,8826],{"class":5557,"line":5833},[5555,8813,5617],{"class":5616},[5555,8815,5620],{"class":5603},[5555,8817,6067],{"class":5634},[5555,8819,6070],{"class":5603},[5555,8821,6094],{"class":5565},[5555,8823,6098],{"class":6097},[5555,8825,6094],{"class":5565},[5555,8827,5779],{"class":5603},[5555,8829,8830],{"class":5557,"line":5866},[5555,8831,5751],{"class":5603},[5555,8833,8834,8836,8838],{"class":5557,"line":5871},[5555,8835,6113],{"class":5561},[5555,8837,6116],{"class":5641},[5555,8839,5779],{"class":5603},[5555,8841,8842],{"class":5557,"line":5877},[5555,8843,6124],{"class":5603},[6587,8845,8847,8851],{"title":8846},".\u002FFactoryViews",[6591,8848,8850],{"className":8849},[5557],"1 2 3 4 5 6 7 8 9 10",[6591,8852,8854],{"className":8853},[5557],"1 4 9 16 25",[5539,8856,8858,8859,8862],{"id":8857},"_2️⃣-adaptor-views-трансформують-існуючі-діапазони","2️⃣ ",[5413,8860,8861],{},"Adaptor Views"," — трансформують існуючі діапазони",[8864,8865,8867,8870],"h4",{"id":8866},"viewsfilter-фільтрація-за-предикатом",[5425,8868,8869],{},"views::filter"," — фільтрація за предикатом",[5544,8872,8875],{"className":5546,"code":8873,"filename":8874,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Cranges>\n\nint main()\n{\n    std::vector\u003Cint> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n    \n    \u002F\u002F Лише парні\n    auto evens = numbers | std::views::filter([](int n) { return n % 2 == 0; });\n    \n    \u002F\u002F Лише > 5\n    auto bigNumbers = numbers | std::views::filter([](int n) { return n > 5; });\n    \n    \u002F\u002F Композиція: парні ТА > 5\n    auto evenAndBig = numbers \n        | std::views::filter([](int n) { return n % 2 == 0; })\n        | std::views::filter([](int n) { return n > 5; });\n    \n    std::cout \u003C\u003C \"Evens: \";\n    for (int n : evens) std::cout \u003C\u003C n \u003C\u003C \" \";\n    \n    std::cout \u003C\u003C \"\\nBig: \";\n    for (int n : bigNumbers) std::cout \u003C\u003C n \u003C\u003C \" \";\n    \n    std::cout \u003C\u003C \"\\nEven and big: \";\n    for (int n : evenAndBig) std::cout \u003C\u003C n \u003C\u003C \" \";\n    std::cout \u003C\u003C \"\\n\";\n    \n    return 0;\n}\n","FilterExample.cpp",[5425,8876,8877,8883,8889,8895,8899,8907,8911,8969,8973,8978,9022,9026,9031,9072,9076,9081,9095,9131,9163,9167,9181,9214,9218,9237,9270,9274,9293,9326,9344,9348,9356],{"__ignoreMap":5551},[5555,8878,8879,8881],{"class":5557,"line":5558},[5555,8880,5562],{"class":5561},[5555,8882,5566],{"class":5565},[5555,8884,8885,8887],{"class":5557,"line":5569},[5555,8886,5562],{"class":5561},[5555,8888,5574],{"class":5565},[5555,8890,8891,8893],{"class":5557,"line":5577},[5555,8892,5562],{"class":5561},[5555,8894,6206],{"class":5565},[5555,8896,8897],{"class":5557,"line":5585},[5555,8898,5589],{"emptyLinePlaceholder":5588},[5555,8900,8901,8903,8905],{"class":5557,"line":5592},[5555,8902,5596],{"class":5595},[5555,8904,5600],{"class":5599},[5555,8906,5604],{"class":5603},[5555,8908,8909],{"class":5557,"line":5607},[5555,8910,5610],{"class":5603},[5555,8912,8913,8915,8917,8919,8921,8923,8925,8927,8929,8931,8933,8935,8937,8939,8941,8943,8945,8947,8949,8951,8953,8955,8957,8959,8961,8963,8965,8967],{"class":5557,"line":5613},[5555,8914,5617],{"class":5616},[5555,8916,5620],{"class":5603},[5555,8918,5623],{"class":5616},[5555,8920,5626],{"class":5603},[5555,8922,5596],{"class":5595},[5555,8924,5631],{"class":5603},[5555,8926,5635],{"class":5634},[5555,8928,5638],{"class":5603},[5555,8930,5642],{"class":5641},[5555,8932,5645],{"class":5603},[5555,8934,5648],{"class":5641},[5555,8936,5645],{"class":5603},[5555,8938,5653],{"class":5641},[5555,8940,5645],{"class":5603},[5555,8942,5658],{"class":5641},[5555,8944,5645],{"class":5603},[5555,8946,5663],{"class":5641},[5555,8948,5645],{"class":5603},[5555,8950,5668],{"class":5641},[5555,8952,5645],{"class":5603},[5555,8954,5673],{"class":5641},[5555,8956,5645],{"class":5603},[5555,8958,5678],{"class":5641},[5555,8960,5645],{"class":5603},[5555,8962,5683],{"class":5641},[5555,8964,5645],{"class":5603},[5555,8966,5688],{"class":5641},[5555,8968,5745],{"class":5603},[5555,8970,8971],{"class":5557,"line":5694},[5555,8972,5751],{"class":5603},[5555,8974,8975],{"class":5557,"line":5748},[5555,8976,8977],{"class":5757},"    \u002F\u002F Лише парні\n",[5555,8979,8980,8982,8984,8986,8988,8990,8992,8994,8996,8998,9000,9002,9004,9006,9008,9010,9012,9014,9016,9018,9020],{"class":5557,"line":5754},[5555,8981,6342],{"class":5595},[5555,8983,7846],{"class":5634},[5555,8985,6348],{"class":5603},[5555,8987,5635],{"class":5634},[5555,8989,7853],{"class":5603},[5555,8991,6359],{"class":5616},[5555,8993,5620],{"class":5603},[5555,8995,5434],{"class":5616},[5555,8997,5620],{"class":5603},[5555,8999,6368],{"class":5599},[5555,9001,6371],{"class":5603},[5555,9003,5596],{"class":5595},[5555,9005,5841],{"class":5634},[5555,9007,5844],{"class":5603},[5555,9009,5847],{"class":5561},[5555,9011,5841],{"class":5634},[5555,9013,5852],{"class":5603},[5555,9015,5648],{"class":5641},[5555,9017,5857],{"class":5603},[5555,9019,5860],{"class":5641},[5555,9021,5863],{"class":5603},[5555,9023,9024],{"class":5557,"line":5761},[5555,9025,5751],{"class":5603},[5555,9027,9028],{"class":5557,"line":5782},[5555,9029,9030],{"class":5757},"    \u002F\u002F Лише > 5\n",[5555,9032,9033,9035,9038,9040,9042,9044,9046,9048,9050,9052,9054,9056,9058,9060,9062,9064,9066,9068,9070],{"class":5557,"line":5815},[5555,9034,6342],{"class":5595},[5555,9036,9037],{"class":5634}," bigNumbers",[5555,9039,6348],{"class":5603},[5555,9041,5635],{"class":5634},[5555,9043,7853],{"class":5603},[5555,9045,6359],{"class":5616},[5555,9047,5620],{"class":5603},[5555,9049,5434],{"class":5616},[5555,9051,5620],{"class":5603},[5555,9053,6368],{"class":5599},[5555,9055,6371],{"class":5603},[5555,9057,5596],{"class":5595},[5555,9059,5841],{"class":5634},[5555,9061,5844],{"class":5603},[5555,9063,5847],{"class":5561},[5555,9065,5841],{"class":5634},[5555,9067,8179],{"class":5603},[5555,9069,5663],{"class":5641},[5555,9071,5863],{"class":5603},[5555,9073,9074],{"class":5557,"line":5833},[5555,9075,5751],{"class":5603},[5555,9077,9078],{"class":5557,"line":5866},[5555,9079,9080],{"class":5757},"    \u002F\u002F Композиція: парні ТА > 5\n",[5555,9082,9083,9085,9088,9090,9092],{"class":5557,"line":5871},[5555,9084,6342],{"class":5595},[5555,9086,9087],{"class":5634}," evenAndBig",[5555,9089,6348],{"class":5603},[5555,9091,5635],{"class":5634},[5555,9093,9094],{"class":5603}," \n",[5555,9096,9097,9099,9101,9103,9105,9107,9109,9111,9113,9115,9117,9119,9121,9123,9125,9127,9129],{"class":5557,"line":5877},[5555,9098,6356],{"class":5603},[5555,9100,6359],{"class":5616},[5555,9102,5620],{"class":5603},[5555,9104,5434],{"class":5616},[5555,9106,5620],{"class":5603},[5555,9108,6368],{"class":5599},[5555,9110,6371],{"class":5603},[5555,9112,5596],{"class":5595},[5555,9114,5841],{"class":5634},[5555,9116,5844],{"class":5603},[5555,9118,5847],{"class":5561},[5555,9120,5841],{"class":5634},[5555,9122,5852],{"class":5603},[5555,9124,5648],{"class":5641},[5555,9126,5857],{"class":5603},[5555,9128,5860],{"class":5641},[5555,9130,6392],{"class":5603},[5555,9132,9133,9135,9137,9139,9141,9143,9145,9147,9149,9151,9153,9155,9157,9159,9161],{"class":5557,"line":5900},[5555,9134,6356],{"class":5603},[5555,9136,6359],{"class":5616},[5555,9138,5620],{"class":5603},[5555,9140,5434],{"class":5616},[5555,9142,5620],{"class":5603},[5555,9144,6368],{"class":5599},[5555,9146,6371],{"class":5603},[5555,9148,5596],{"class":5595},[5555,9150,5841],{"class":5634},[5555,9152,5844],{"class":5603},[5555,9154,5847],{"class":5561},[5555,9156,5841],{"class":5634},[5555,9158,8179],{"class":5603},[5555,9160,5663],{"class":5641},[5555,9162,5863],{"class":5603},[5555,9164,9165],{"class":5557,"line":5918},[5555,9166,5751],{"class":5603},[5555,9168,9169,9171,9173,9175,9177,9179],{"class":5557,"line":5923},[5555,9170,5617],{"class":5616},[5555,9172,5620],{"class":5603},[5555,9174,6067],{"class":5634},[5555,9176,6070],{"class":5603},[5555,9178,7902],{"class":5565},[5555,9180,5779],{"class":5603},[5555,9182,9183,9185,9187,9189,9191,9193,9195,9198,9200,9202,9204,9206,9208,9210,9212],{"class":5557,"line":5929},[5555,9184,6043],{"class":5561},[5555,9186,5439],{"class":5603},[5555,9188,5596],{"class":5595},[5555,9190,5841],{"class":5634},[5555,9192,6052],{"class":5603},[5555,9194,5776],{"class":5634},[5555,9196,9197],{"class":5603},") ",[5555,9199,6359],{"class":5616},[5555,9201,5620],{"class":5603},[5555,9203,6067],{"class":5634},[5555,9205,6070],{"class":5603},[5555,9207,6073],{"class":5634},[5555,9209,6070],{"class":5603},[5555,9211,6078],{"class":5565},[5555,9213,5779],{"class":5603},[5555,9215,9216],{"class":5557,"line":5966},[5555,9217,5751],{"class":5603},[5555,9219,9220,9222,9224,9226,9228,9230,9232,9235],{"class":5557,"line":5989},[5555,9221,5617],{"class":5616},[5555,9223,5620],{"class":5603},[5555,9225,6067],{"class":5634},[5555,9227,6070],{"class":5603},[5555,9229,6094],{"class":5565},[5555,9231,6098],{"class":6097},[5555,9233,9234],{"class":5565},"Big: \"",[5555,9236,5779],{"class":5603},[5555,9238,9239,9241,9243,9245,9247,9249,9252,9254,9256,9258,9260,9262,9264,9266,9268],{"class":5557,"line":5994},[5555,9240,6043],{"class":5561},[5555,9242,5439],{"class":5603},[5555,9244,5596],{"class":5595},[5555,9246,5841],{"class":5634},[5555,9248,6052],{"class":5603},[5555,9250,9251],{"class":5634},"bigNumbers",[5555,9253,9197],{"class":5603},[5555,9255,6359],{"class":5616},[5555,9257,5620],{"class":5603},[5555,9259,6067],{"class":5634},[5555,9261,6070],{"class":5603},[5555,9263,6073],{"class":5634},[5555,9265,6070],{"class":5603},[5555,9267,6078],{"class":5565},[5555,9269,5779],{"class":5603},[5555,9271,9272],{"class":5557,"line":6000},[5555,9273,5751],{"class":5603},[5555,9275,9276,9278,9280,9282,9284,9286,9288,9291],{"class":5557,"line":6029},[5555,9277,5617],{"class":5616},[5555,9279,5620],{"class":5603},[5555,9281,6067],{"class":5634},[5555,9283,6070],{"class":5603},[5555,9285,6094],{"class":5565},[5555,9287,6098],{"class":6097},[5555,9289,9290],{"class":5565},"Even and big: \"",[5555,9292,5779],{"class":5603},[5555,9294,9295,9297,9299,9301,9303,9305,9308,9310,9312,9314,9316,9318,9320,9322,9324],{"class":5557,"line":6034},[5555,9296,6043],{"class":5561},[5555,9298,5439],{"class":5603},[5555,9300,5596],{"class":5595},[5555,9302,5841],{"class":5634},[5555,9304,6052],{"class":5603},[5555,9306,9307],{"class":5634},"evenAndBig",[5555,9309,9197],{"class":5603},[5555,9311,6359],{"class":5616},[5555,9313,5620],{"class":5603},[5555,9315,6067],{"class":5634},[5555,9317,6070],{"class":5603},[5555,9319,6073],{"class":5634},[5555,9321,6070],{"class":5603},[5555,9323,6078],{"class":5565},[5555,9325,5779],{"class":5603},[5555,9327,9328,9330,9332,9334,9336,9338,9340,9342],{"class":5557,"line":6040},[5555,9329,5617],{"class":5616},[5555,9331,5620],{"class":5603},[5555,9333,6067],{"class":5634},[5555,9335,6070],{"class":5603},[5555,9337,6094],{"class":5565},[5555,9339,6098],{"class":6097},[5555,9341,6094],{"class":5565},[5555,9343,5779],{"class":5603},[5555,9345,9346],{"class":5557,"line":6059},[5555,9347,5751],{"class":5603},[5555,9349,9350,9352,9354],{"class":5557,"line":6083},[5555,9351,6113],{"class":5561},[5555,9353,6116],{"class":5641},[5555,9355,5779],{"class":5603},[5555,9357,9358],{"class":5557,"line":6105},[5555,9359,6124],{"class":5603},[6587,9361,9363,9366,9370],{"title":9362},".\u002FFilterExample",[6591,9364,8075],{"className":9365},[5557],[6591,9367,9369],{"className":9368},[5557],"Big: 6 7 8 9 10",[6591,9371,9373],{"className":9372},[5557],"Even and big: 6 8 10",[8864,9375,9377,9380],{"id":9376},"viewstransform-трансформація-кожного-елемента",[5425,9378,9379],{},"views::transform"," — трансформація кожного елемента",[5544,9382,9385],{"className":5546,"code":9383,"filename":9384,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Cranges>\n#include \u003Cstring>\n\nint main()\n{\n    std::vector\u003Cint> numbers = {1, 2, 3, 4, 5};\n    \n    \u002F\u002F Множимо на 2\n    auto doubled = numbers | std::views::transform([](int n) { return n * 2; });\n    \n    \u002F\u002F Конвертуємо в рядки\n    auto strings = numbers | std::views::transform([](int n) {\n        return std::to_string(n);\n    });\n    \n    std::cout \u003C\u003C \"Doubled: \";\n    for (int n : doubled) std::cout \u003C\u003C n \u003C\u003C \" \";\n    \n    std::cout \u003C\u003C \"\\nStrings: \";\n    for (const auto& s : strings) std::cout \u003C\u003C s \u003C\u003C \" \";\n    std::cout \u003C\u003C \"\\n\";\n    \n    return 0;\n}\n","TransformExample.cpp",[5425,9386,9387,9393,9399,9405,9412,9416,9424,9428,9466,9470,9475,9516,9520,9525,9557,9576,9581,9585,9600,9633,9637,9656,9695,9713,9717,9725],{"__ignoreMap":5551},[5555,9388,9389,9391],{"class":5557,"line":5558},[5555,9390,5562],{"class":5561},[5555,9392,5566],{"class":5565},[5555,9394,9395,9397],{"class":5557,"line":5569},[5555,9396,5562],{"class":5561},[5555,9398,5574],{"class":5565},[5555,9400,9401,9403],{"class":5557,"line":5577},[5555,9402,5562],{"class":5561},[5555,9404,6206],{"class":5565},[5555,9406,9407,9409],{"class":5557,"line":5585},[5555,9408,5562],{"class":5561},[5555,9410,9411],{"class":5565}," \u003Cstring>\n",[5555,9413,9414],{"class":5557,"line":5592},[5555,9415,5589],{"emptyLinePlaceholder":5588},[5555,9417,9418,9420,9422],{"class":5557,"line":5607},[5555,9419,5596],{"class":5595},[5555,9421,5600],{"class":5599},[5555,9423,5604],{"class":5603},[5555,9425,9426],{"class":5557,"line":5613},[5555,9427,5610],{"class":5603},[5555,9429,9430,9432,9434,9436,9438,9440,9442,9444,9446,9448,9450,9452,9454,9456,9458,9460,9462,9464],{"class":5557,"line":5694},[5555,9431,5617],{"class":5616},[5555,9433,5620],{"class":5603},[5555,9435,5623],{"class":5616},[5555,9437,5626],{"class":5603},[5555,9439,5596],{"class":5595},[5555,9441,5631],{"class":5603},[5555,9443,5635],{"class":5634},[5555,9445,5638],{"class":5603},[5555,9447,5642],{"class":5641},[5555,9449,5645],{"class":5603},[5555,9451,5648],{"class":5641},[5555,9453,5645],{"class":5603},[5555,9455,5653],{"class":5641},[5555,9457,5645],{"class":5603},[5555,9459,5658],{"class":5641},[5555,9461,5645],{"class":5603},[5555,9463,5663],{"class":5641},[5555,9465,5745],{"class":5603},[5555,9467,9468],{"class":5557,"line":5748},[5555,9469,5751],{"class":5603},[5555,9471,9472],{"class":5557,"line":5754},[5555,9473,9474],{"class":5757},"    \u002F\u002F Множимо на 2\n",[5555,9476,9477,9479,9482,9484,9486,9488,9490,9492,9494,9496,9498,9500,9502,9504,9506,9508,9510,9512,9514],{"class":5557,"line":5761},[5555,9478,6342],{"class":5595},[5555,9480,9481],{"class":5634}," doubled",[5555,9483,6348],{"class":5603},[5555,9485,5635],{"class":5634},[5555,9487,7853],{"class":5603},[5555,9489,6359],{"class":5616},[5555,9491,5620],{"class":5603},[5555,9493,5434],{"class":5616},[5555,9495,5620],{"class":5603},[5555,9497,5936],{"class":5599},[5555,9499,6371],{"class":5603},[5555,9501,5596],{"class":5595},[5555,9503,5841],{"class":5634},[5555,9505,5844],{"class":5603},[5555,9507,5847],{"class":5561},[5555,9509,5841],{"class":5634},[5555,9511,5982],{"class":5603},[5555,9513,5648],{"class":5641},[5555,9515,5863],{"class":5603},[5555,9517,9518],{"class":5557,"line":5782},[5555,9519,5751],{"class":5603},[5555,9521,9522],{"class":5557,"line":5815},[5555,9523,9524],{"class":5757},"    \u002F\u002F Конвертуємо в рядки\n",[5555,9526,9527,9529,9532,9534,9536,9538,9540,9542,9544,9546,9548,9550,9552,9554],{"class":5557,"line":5833},[5555,9528,6342],{"class":5595},[5555,9530,9531],{"class":5634}," strings",[5555,9533,6348],{"class":5603},[5555,9535,5635],{"class":5634},[5555,9537,7853],{"class":5603},[5555,9539,6359],{"class":5616},[5555,9541,5620],{"class":5603},[5555,9543,5434],{"class":5616},[5555,9545,5620],{"class":5603},[5555,9547,5936],{"class":5599},[5555,9549,6371],{"class":5603},[5555,9551,5596],{"class":5595},[5555,9553,5841],{"class":5634},[5555,9555,9556],{"class":5603},") {\n",[5555,9558,9559,9562,9565,9567,9570,9572,9574],{"class":5557,"line":5866},[5555,9560,9561],{"class":5561},"        return",[5555,9563,9564],{"class":5616}," std",[5555,9566,5620],{"class":5603},[5555,9568,9569],{"class":5599},"to_string",[5555,9571,5792],{"class":5603},[5555,9573,6073],{"class":5634},[5555,9575,5915],{"class":5603},[5555,9577,9578],{"class":5557,"line":5871},[5555,9579,9580],{"class":5603},"    });\n",[5555,9582,9583],{"class":5557,"line":5877},[5555,9584,5751],{"class":5603},[5555,9586,9587,9589,9591,9593,9595,9598],{"class":5557,"line":5900},[5555,9588,5617],{"class":5616},[5555,9590,5620],{"class":5603},[5555,9592,6067],{"class":5634},[5555,9594,6070],{"class":5603},[5555,9596,9597],{"class":5565},"\"Doubled: \"",[5555,9599,5779],{"class":5603},[5555,9601,9602,9604,9606,9608,9610,9612,9615,9617,9619,9621,9623,9625,9627,9629,9631],{"class":5557,"line":5918},[5555,9603,6043],{"class":5561},[5555,9605,5439],{"class":5603},[5555,9607,5596],{"class":5595},[5555,9609,5841],{"class":5634},[5555,9611,6052],{"class":5603},[5555,9613,9614],{"class":5634},"doubled",[5555,9616,9197],{"class":5603},[5555,9618,6359],{"class":5616},[5555,9620,5620],{"class":5603},[5555,9622,6067],{"class":5634},[5555,9624,6070],{"class":5603},[5555,9626,6073],{"class":5634},[5555,9628,6070],{"class":5603},[5555,9630,6078],{"class":5565},[5555,9632,5779],{"class":5603},[5555,9634,9635],{"class":5557,"line":5923},[5555,9636,5751],{"class":5603},[5555,9638,9639,9641,9643,9645,9647,9649,9651,9654],{"class":5557,"line":5929},[5555,9640,5617],{"class":5616},[5555,9642,5620],{"class":5603},[5555,9644,6067],{"class":5634},[5555,9646,6070],{"class":5603},[5555,9648,6094],{"class":5565},[5555,9650,6098],{"class":6097},[5555,9652,9653],{"class":5565},"Strings: \"",[5555,9655,5779],{"class":5603},[5555,9657,9658,9660,9662,9665,9668,9671,9673,9676,9678,9680,9682,9684,9686,9689,9691,9693],{"class":5557,"line":5966},[5555,9659,6043],{"class":5561},[5555,9661,5439],{"class":5603},[5555,9663,9664],{"class":5595},"const",[5555,9666,9667],{"class":5595}," auto&",[5555,9669,9670],{"class":5634}," s",[5555,9672,6052],{"class":5603},[5555,9674,9675],{"class":5634},"strings",[5555,9677,9197],{"class":5603},[5555,9679,6359],{"class":5616},[5555,9681,5620],{"class":5603},[5555,9683,6067],{"class":5634},[5555,9685,6070],{"class":5603},[5555,9687,9688],{"class":5634},"s",[5555,9690,6070],{"class":5603},[5555,9692,6078],{"class":5565},[5555,9694,5779],{"class":5603},[5555,9696,9697,9699,9701,9703,9705,9707,9709,9711],{"class":5557,"line":5989},[5555,9698,5617],{"class":5616},[5555,9700,5620],{"class":5603},[5555,9702,6067],{"class":5634},[5555,9704,6070],{"class":5603},[5555,9706,6094],{"class":5565},[5555,9708,6098],{"class":6097},[5555,9710,6094],{"class":5565},[5555,9712,5779],{"class":5603},[5555,9714,9715],{"class":5557,"line":5994},[5555,9716,5751],{"class":5603},[5555,9718,9719,9721,9723],{"class":5557,"line":6000},[5555,9720,6113],{"class":5561},[5555,9722,6116],{"class":5641},[5555,9724,5779],{"class":5603},[5555,9726,9727],{"class":5557,"line":6029},[5555,9728,6124],{"class":5603},[6587,9730,9732,9736],{"title":9731},".\u002FTransformExample",[6591,9733,9735],{"className":9734},[5557],"Doubled: 2 4 6 8 10",[6591,9737,9739],{"className":9738},[5557],"Strings: 1 2 3 4 5",[8864,9741,9743,6690,9746,9749],{"id":9742},"viewstake-viewsdrop-обмеження-діапазону",[5425,9744,9745],{},"views::take",[5425,9747,9748],{},"views::drop"," — обмеження діапазону",[5544,9751,9754],{"className":5546,"code":9752,"filename":9753,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cranges>\n\nint main()\n{\n    auto numbers = std::views::iota(1, 21);  \u002F\u002F 1..20\n    \n    \u002F\u002F Перші 5\n    auto first5 = numbers | std::views::take(5);\n    \n    \u002F\u002F Пропустити перші 15\n    auto last5 = numbers | std::views::drop(15);\n    \n    \u002F\u002F Пропустити 5, взяти наступні 5\n    auto middle = numbers | std::views::drop(5) | std::views::take(5);\n    \n    std::cout \u003C\u003C \"First 5: \";\n    for (int n : first5) std::cout \u003C\u003C n \u003C\u003C \" \";\n    \n    std::cout \u003C\u003C \"\\nLast 5: \";\n    for (int n : last5) std::cout \u003C\u003C n \u003C\u003C \" \";\n    \n    std::cout \u003C\u003C \"\\nMiddle (6-10): \";\n    for (int n : middle) std::cout \u003C\u003C n \u003C\u003C \" \";\n    std::cout \u003C\u003C \"\\n\";\n    \n    return 0;\n}\n","TakeDropExample.cpp",[5425,9755,9756,9762,9768,9772,9780,9784,9818,9822,9827,9856,9860,9865,9895,9899,9904,9949,9953,9968,10001,10005,10024,10057,10061,10080,10113,10131,10135,10143],{"__ignoreMap":5551},[5555,9757,9758,9760],{"class":5557,"line":5558},[5555,9759,5562],{"class":5561},[5555,9761,5566],{"class":5565},[5555,9763,9764,9766],{"class":5557,"line":5569},[5555,9765,5562],{"class":5561},[5555,9767,6206],{"class":5565},[5555,9769,9770],{"class":5557,"line":5577},[5555,9771,5589],{"emptyLinePlaceholder":5588},[5555,9773,9774,9776,9778],{"class":5557,"line":5585},[5555,9775,5596],{"class":5595},[5555,9777,5600],{"class":5599},[5555,9779,5604],{"class":5603},[5555,9781,9782],{"class":5557,"line":5592},[5555,9783,5610],{"class":5603},[5555,9785,9786,9788,9791,9793,9795,9797,9799,9801,9803,9805,9807,9809,9812,9815],{"class":5557,"line":5607},[5555,9787,6342],{"class":5595},[5555,9789,9790],{"class":5634}," numbers",[5555,9792,6348],{"class":5603},[5555,9794,6359],{"class":5616},[5555,9796,5620],{"class":5603},[5555,9798,5434],{"class":5616},[5555,9800,5620],{"class":5603},[5555,9802,8492],{"class":5599},[5555,9804,5792],{"class":5603},[5555,9806,5642],{"class":5641},[5555,9808,5645],{"class":5603},[5555,9810,9811],{"class":5641},"21",[5555,9813,9814],{"class":5603},");",[5555,9816,9817],{"class":5757},"  \u002F\u002F 1..20\n",[5555,9819,9820],{"class":5557,"line":5613},[5555,9821,5751],{"class":5603},[5555,9823,9824],{"class":5557,"line":5694},[5555,9825,9826],{"class":5757},"    \u002F\u002F Перші 5\n",[5555,9828,9829,9831,9834,9836,9838,9840,9842,9844,9846,9848,9850,9852,9854],{"class":5557,"line":5748},[5555,9830,6342],{"class":5595},[5555,9832,9833],{"class":5634}," first5",[5555,9835,6348],{"class":5603},[5555,9837,5635],{"class":5634},[5555,9839,7853],{"class":5603},[5555,9841,6359],{"class":5616},[5555,9843,5620],{"class":5603},[5555,9845,5434],{"class":5616},[5555,9847,5620],{"class":5603},[5555,9849,6407],{"class":5599},[5555,9851,5792],{"class":5603},[5555,9853,5663],{"class":5641},[5555,9855,5915],{"class":5603},[5555,9857,9858],{"class":5557,"line":5754},[5555,9859,5751],{"class":5603},[5555,9861,9862],{"class":5557,"line":5761},[5555,9863,9864],{"class":5757},"    \u002F\u002F Пропустити перші 15\n",[5555,9866,9867,9869,9872,9874,9876,9878,9880,9882,9884,9886,9889,9891,9893],{"class":5557,"line":5782},[5555,9868,6342],{"class":5595},[5555,9870,9871],{"class":5634}," last5",[5555,9873,6348],{"class":5603},[5555,9875,5635],{"class":5634},[5555,9877,7853],{"class":5603},[5555,9879,6359],{"class":5616},[5555,9881,5620],{"class":5603},[5555,9883,5434],{"class":5616},[5555,9885,5620],{"class":5603},[5555,9887,9888],{"class":5599},"drop",[5555,9890,5792],{"class":5603},[5555,9892,5717],{"class":5641},[5555,9894,5915],{"class":5603},[5555,9896,9897],{"class":5557,"line":5815},[5555,9898,5751],{"class":5603},[5555,9900,9901],{"class":5557,"line":5833},[5555,9902,9903],{"class":5757},"    \u002F\u002F Пропустити 5, взяти наступні 5\n",[5555,9905,9906,9908,9911,9913,9915,9917,9919,9921,9923,9925,9927,9929,9931,9933,9935,9937,9939,9941,9943,9945,9947],{"class":5557,"line":5866},[5555,9907,6342],{"class":5595},[5555,9909,9910],{"class":5634}," middle",[5555,9912,6348],{"class":5603},[5555,9914,5635],{"class":5634},[5555,9916,7853],{"class":5603},[5555,9918,6359],{"class":5616},[5555,9920,5620],{"class":5603},[5555,9922,5434],{"class":5616},[5555,9924,5620],{"class":5603},[5555,9926,9888],{"class":5599},[5555,9928,5792],{"class":5603},[5555,9930,5663],{"class":5641},[5555,9932,8771],{"class":5603},[5555,9934,6359],{"class":5616},[5555,9936,5620],{"class":5603},[5555,9938,5434],{"class":5616},[5555,9940,5620],{"class":5603},[5555,9942,6407],{"class":5599},[5555,9944,5792],{"class":5603},[5555,9946,5663],{"class":5641},[5555,9948,5915],{"class":5603},[5555,9950,9951],{"class":5557,"line":5871},[5555,9952,5751],{"class":5603},[5555,9954,9955,9957,9959,9961,9963,9966],{"class":5557,"line":5877},[5555,9956,5617],{"class":5616},[5555,9958,5620],{"class":5603},[5555,9960,6067],{"class":5634},[5555,9962,6070],{"class":5603},[5555,9964,9965],{"class":5565},"\"First 5: \"",[5555,9967,5779],{"class":5603},[5555,9969,9970,9972,9974,9976,9978,9980,9983,9985,9987,9989,9991,9993,9995,9997,9999],{"class":5557,"line":5900},[5555,9971,6043],{"class":5561},[5555,9973,5439],{"class":5603},[5555,9975,5596],{"class":5595},[5555,9977,5841],{"class":5634},[5555,9979,6052],{"class":5603},[5555,9981,9982],{"class":5634},"first5",[5555,9984,9197],{"class":5603},[5555,9986,6359],{"class":5616},[5555,9988,5620],{"class":5603},[5555,9990,6067],{"class":5634},[5555,9992,6070],{"class":5603},[5555,9994,6073],{"class":5634},[5555,9996,6070],{"class":5603},[5555,9998,6078],{"class":5565},[5555,10000,5779],{"class":5603},[5555,10002,10003],{"class":5557,"line":5918},[5555,10004,5751],{"class":5603},[5555,10006,10007,10009,10011,10013,10015,10017,10019,10022],{"class":5557,"line":5923},[5555,10008,5617],{"class":5616},[5555,10010,5620],{"class":5603},[5555,10012,6067],{"class":5634},[5555,10014,6070],{"class":5603},[5555,10016,6094],{"class":5565},[5555,10018,6098],{"class":6097},[5555,10020,10021],{"class":5565},"Last 5: \"",[5555,10023,5779],{"class":5603},[5555,10025,10026,10028,10030,10032,10034,10036,10039,10041,10043,10045,10047,10049,10051,10053,10055],{"class":5557,"line":5929},[5555,10027,6043],{"class":5561},[5555,10029,5439],{"class":5603},[5555,10031,5596],{"class":5595},[5555,10033,5841],{"class":5634},[5555,10035,6052],{"class":5603},[5555,10037,10038],{"class":5634},"last5",[5555,10040,9197],{"class":5603},[5555,10042,6359],{"class":5616},[5555,10044,5620],{"class":5603},[5555,10046,6067],{"class":5634},[5555,10048,6070],{"class":5603},[5555,10050,6073],{"class":5634},[5555,10052,6070],{"class":5603},[5555,10054,6078],{"class":5565},[5555,10056,5779],{"class":5603},[5555,10058,10059],{"class":5557,"line":5966},[5555,10060,5751],{"class":5603},[5555,10062,10063,10065,10067,10069,10071,10073,10075,10078],{"class":5557,"line":5989},[5555,10064,5617],{"class":5616},[5555,10066,5620],{"class":5603},[5555,10068,6067],{"class":5634},[5555,10070,6070],{"class":5603},[5555,10072,6094],{"class":5565},[5555,10074,6098],{"class":6097},[5555,10076,10077],{"class":5565},"Middle (6-10): \"",[5555,10079,5779],{"class":5603},[5555,10081,10082,10084,10086,10088,10090,10092,10095,10097,10099,10101,10103,10105,10107,10109,10111],{"class":5557,"line":5994},[5555,10083,6043],{"class":5561},[5555,10085,5439],{"class":5603},[5555,10087,5596],{"class":5595},[5555,10089,5841],{"class":5634},[5555,10091,6052],{"class":5603},[5555,10093,10094],{"class":5634},"middle",[5555,10096,9197],{"class":5603},[5555,10098,6359],{"class":5616},[5555,10100,5620],{"class":5603},[5555,10102,6067],{"class":5634},[5555,10104,6070],{"class":5603},[5555,10106,6073],{"class":5634},[5555,10108,6070],{"class":5603},[5555,10110,6078],{"class":5565},[5555,10112,5779],{"class":5603},[5555,10114,10115,10117,10119,10121,10123,10125,10127,10129],{"class":5557,"line":6000},[5555,10116,5617],{"class":5616},[5555,10118,5620],{"class":5603},[5555,10120,6067],{"class":5634},[5555,10122,6070],{"class":5603},[5555,10124,6094],{"class":5565},[5555,10126,6098],{"class":6097},[5555,10128,6094],{"class":5565},[5555,10130,5779],{"class":5603},[5555,10132,10133],{"class":5557,"line":6029},[5555,10134,5751],{"class":5603},[5555,10136,10137,10139,10141],{"class":5557,"line":6034},[5555,10138,6113],{"class":5561},[5555,10140,6116],{"class":5641},[5555,10142,5779],{"class":5603},[5555,10144,10145],{"class":5557,"line":6040},[5555,10146,6124],{"class":5603},[6587,10148,10150,10154,10158],{"title":10149},".\u002FTakeDropExample",[6591,10151,10153],{"className":10152},[5557],"First 5: 1 2 3 4 5",[6591,10155,10157],{"className":10156},[5557],"Last 5: 16 17 18 19 20",[6591,10159,10161],{"className":10160},[5557],"Middle (6-10): 6 7 8 9 10",[8864,10163,10165,10168],{"id":10164},"viewsreverse-зворотний-порядок",[5425,10166,10167],{},"views::reverse"," — зворотний порядок",[5544,10170,10173],{"className":5546,"code":10171,"filename":10172,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Cranges>\n\nint main()\n{\n    std::vector\u003Cint> numbers = {1, 2, 3, 4, 5};\n    \n    auto reversed = numbers | std::views::reverse;\n    \n    std::cout \u003C\u003C \"Original: \";\n    for (int n : numbers) std::cout \u003C\u003C n \u003C\u003C \" \";\n    \n    std::cout \u003C\u003C \"\\nReversed: \";\n    for (int n : reversed) std::cout \u003C\u003C n \u003C\u003C \" \";\n    std::cout \u003C\u003C \"\\n\";\n    \n    return 0;\n}\n","ReverseExample.cpp",[5425,10174,10175,10181,10187,10193,10197,10205,10209,10247,10251,10277,10281,10296,10328,10332,10351,10384,10402,10406,10414],{"__ignoreMap":5551},[5555,10176,10177,10179],{"class":5557,"line":5558},[5555,10178,5562],{"class":5561},[5555,10180,5566],{"class":5565},[5555,10182,10183,10185],{"class":5557,"line":5569},[5555,10184,5562],{"class":5561},[5555,10186,5574],{"class":5565},[5555,10188,10189,10191],{"class":5557,"line":5577},[5555,10190,5562],{"class":5561},[5555,10192,6206],{"class":5565},[5555,10194,10195],{"class":5557,"line":5585},[5555,10196,5589],{"emptyLinePlaceholder":5588},[5555,10198,10199,10201,10203],{"class":5557,"line":5592},[5555,10200,5596],{"class":5595},[5555,10202,5600],{"class":5599},[5555,10204,5604],{"class":5603},[5555,10206,10207],{"class":5557,"line":5607},[5555,10208,5610],{"class":5603},[5555,10210,10211,10213,10215,10217,10219,10221,10223,10225,10227,10229,10231,10233,10235,10237,10239,10241,10243,10245],{"class":5557,"line":5613},[5555,10212,5617],{"class":5616},[5555,10214,5620],{"class":5603},[5555,10216,5623],{"class":5616},[5555,10218,5626],{"class":5603},[5555,10220,5596],{"class":5595},[5555,10222,5631],{"class":5603},[5555,10224,5635],{"class":5634},[5555,10226,5638],{"class":5603},[5555,10228,5642],{"class":5641},[5555,10230,5645],{"class":5603},[5555,10232,5648],{"class":5641},[5555,10234,5645],{"class":5603},[5555,10236,5653],{"class":5641},[5555,10238,5645],{"class":5603},[5555,10240,5658],{"class":5641},[5555,10242,5645],{"class":5603},[5555,10244,5663],{"class":5641},[5555,10246,5745],{"class":5603},[5555,10248,10249],{"class":5557,"line":5694},[5555,10250,5751],{"class":5603},[5555,10252,10253,10255,10258,10260,10262,10264,10266,10268,10270,10272,10275],{"class":5557,"line":5748},[5555,10254,6342],{"class":5595},[5555,10256,10257],{"class":5634}," reversed",[5555,10259,6348],{"class":5603},[5555,10261,5635],{"class":5634},[5555,10263,7853],{"class":5603},[5555,10265,6359],{"class":5616},[5555,10267,5620],{"class":5603},[5555,10269,5434],{"class":5616},[5555,10271,5620],{"class":5603},[5555,10273,10274],{"class":5634},"reverse",[5555,10276,5779],{"class":5603},[5555,10278,10279],{"class":5557,"line":5754},[5555,10280,5751],{"class":5603},[5555,10282,10283,10285,10287,10289,10291,10294],{"class":5557,"line":5761},[5555,10284,5617],{"class":5616},[5555,10286,5620],{"class":5603},[5555,10288,6067],{"class":5634},[5555,10290,6070],{"class":5603},[5555,10292,10293],{"class":5565},"\"Original: \"",[5555,10295,5779],{"class":5603},[5555,10297,10298,10300,10302,10304,10306,10308,10310,10312,10314,10316,10318,10320,10322,10324,10326],{"class":5557,"line":5782},[5555,10299,6043],{"class":5561},[5555,10301,5439],{"class":5603},[5555,10303,5596],{"class":5595},[5555,10305,5841],{"class":5634},[5555,10307,6052],{"class":5603},[5555,10309,5635],{"class":5634},[5555,10311,9197],{"class":5603},[5555,10313,6359],{"class":5616},[5555,10315,5620],{"class":5603},[5555,10317,6067],{"class":5634},[5555,10319,6070],{"class":5603},[5555,10321,6073],{"class":5634},[5555,10323,6070],{"class":5603},[5555,10325,6078],{"class":5565},[5555,10327,5779],{"class":5603},[5555,10329,10330],{"class":5557,"line":5815},[5555,10331,5751],{"class":5603},[5555,10333,10334,10336,10338,10340,10342,10344,10346,10349],{"class":5557,"line":5833},[5555,10335,5617],{"class":5616},[5555,10337,5620],{"class":5603},[5555,10339,6067],{"class":5634},[5555,10341,6070],{"class":5603},[5555,10343,6094],{"class":5565},[5555,10345,6098],{"class":6097},[5555,10347,10348],{"class":5565},"Reversed: \"",[5555,10350,5779],{"class":5603},[5555,10352,10353,10355,10357,10359,10361,10363,10366,10368,10370,10372,10374,10376,10378,10380,10382],{"class":5557,"line":5866},[5555,10354,6043],{"class":5561},[5555,10356,5439],{"class":5603},[5555,10358,5596],{"class":5595},[5555,10360,5841],{"class":5634},[5555,10362,6052],{"class":5603},[5555,10364,10365],{"class":5634},"reversed",[5555,10367,9197],{"class":5603},[5555,10369,6359],{"class":5616},[5555,10371,5620],{"class":5603},[5555,10373,6067],{"class":5634},[5555,10375,6070],{"class":5603},[5555,10377,6073],{"class":5634},[5555,10379,6070],{"class":5603},[5555,10381,6078],{"class":5565},[5555,10383,5779],{"class":5603},[5555,10385,10386,10388,10390,10392,10394,10396,10398,10400],{"class":5557,"line":5871},[5555,10387,5617],{"class":5616},[5555,10389,5620],{"class":5603},[5555,10391,6067],{"class":5634},[5555,10393,6070],{"class":5603},[5555,10395,6094],{"class":5565},[5555,10397,6098],{"class":6097},[5555,10399,6094],{"class":5565},[5555,10401,5779],{"class":5603},[5555,10403,10404],{"class":5557,"line":5877},[5555,10405,5751],{"class":5603},[5555,10407,10408,10410,10412],{"class":5557,"line":5900},[5555,10409,6113],{"class":5561},[5555,10411,6116],{"class":5641},[5555,10413,5779],{"class":5603},[5555,10415,10416],{"class":5557,"line":5918},[5555,10417,6124],{"class":5603},[6587,10419,10421,10425],{"title":10420},".\u002FReverseExample",[6591,10422,10424],{"className":10423},[5557],"Original: 1 2 3 4 5",[6591,10426,10428],{"className":10427},[5557],"Reversed: 5 4 3 2 1",[8864,10430,10432,6690,10435,10438],{"id":10431},"viewskeys-viewsvalues-для-mappair",[5425,10433,10434],{},"views::keys",[5425,10436,10437],{},"views::values"," — для map\u002Fpair",[5544,10440,10443],{"className":5546,"code":10441,"filename":10442,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cmap>\n#include \u003Cranges>\n\nint main()\n{\n    std::map\u003Cstd::string, int> scores = {\n        {\"Alice\", 95},\n        {\"Bob\", 87},\n        {\"Charlie\", 92}\n    };\n    \n    \u002F\u002F Лише ключі\n    auto names = scores | std::views::keys;\n    \n    \u002F\u002F Лише значення\n    auto points = scores | std::views::values;\n    \n    std::cout \u003C\u003C \"Names: \";\n    for (const auto& name : names) std::cout \u003C\u003C name \u003C\u003C \" \";\n    \n    std::cout \u003C\u003C \"\\nScores: \";\n    for (int score : points) std::cout \u003C\u003C score \u003C\u003C \" \";\n    std::cout \u003C\u003C \"\\n\";\n    \n    return 0;\n}\n","KeysValuesExample.cpp",[5425,10444,10445,10451,10458,10464,10468,10476,10480,10509,10525,10539,10553,10558,10562,10567,10593,10597,10602,10628,10632,10647,10684,10688,10707,10742,10760,10764,10772],{"__ignoreMap":5551},[5555,10446,10447,10449],{"class":5557,"line":5558},[5555,10448,5562],{"class":5561},[5555,10450,5566],{"class":5565},[5555,10452,10453,10455],{"class":5557,"line":5569},[5555,10454,5562],{"class":5561},[5555,10456,10457],{"class":5565}," \u003Cmap>\n",[5555,10459,10460,10462],{"class":5557,"line":5577},[5555,10461,5562],{"class":5561},[5555,10463,6206],{"class":5565},[5555,10465,10466],{"class":5557,"line":5585},[5555,10467,5589],{"emptyLinePlaceholder":5588},[5555,10469,10470,10472,10474],{"class":5557,"line":5592},[5555,10471,5596],{"class":5595},[5555,10473,5600],{"class":5599},[5555,10475,5604],{"class":5603},[5555,10477,10478],{"class":5557,"line":5607},[5555,10479,5610],{"class":5603},[5555,10481,10482,10484,10486,10488,10490,10492,10494,10497,10499,10501,10503,10506],{"class":5557,"line":5613},[5555,10483,5617],{"class":5616},[5555,10485,5620],{"class":5603},[5555,10487,7209],{"class":5616},[5555,10489,5626],{"class":5603},[5555,10491,6359],{"class":5616},[5555,10493,5620],{"class":5603},[5555,10495,10496],{"class":5616},"string",[5555,10498,5645],{"class":5603},[5555,10500,5596],{"class":5595},[5555,10502,5631],{"class":5603},[5555,10504,10505],{"class":5634},"scores",[5555,10507,10508],{"class":5603}," = {\n",[5555,10510,10511,10514,10517,10519,10522],{"class":5557,"line":5694},[5555,10512,10513],{"class":5603},"        {",[5555,10515,10516],{"class":5565},"\"Alice\"",[5555,10518,5645],{"class":5603},[5555,10520,10521],{"class":5641},"95",[5555,10523,10524],{"class":5603},"},\n",[5555,10526,10527,10529,10532,10534,10537],{"class":5557,"line":5748},[5555,10528,10513],{"class":5603},[5555,10530,10531],{"class":5565},"\"Bob\"",[5555,10533,5645],{"class":5603},[5555,10535,10536],{"class":5641},"87",[5555,10538,10524],{"class":5603},[5555,10540,10541,10543,10546,10548,10551],{"class":5557,"line":5754},[5555,10542,10513],{"class":5603},[5555,10544,10545],{"class":5565},"\"Charlie\"",[5555,10547,5645],{"class":5603},[5555,10549,10550],{"class":5641},"92",[5555,10552,6124],{"class":5603},[5555,10554,10555],{"class":5557,"line":5761},[5555,10556,10557],{"class":5603},"    };\n",[5555,10559,10560],{"class":5557,"line":5782},[5555,10561,5751],{"class":5603},[5555,10563,10564],{"class":5557,"line":5815},[5555,10565,10566],{"class":5757},"    \u002F\u002F Лише ключі\n",[5555,10568,10569,10571,10574,10576,10578,10580,10582,10584,10586,10588,10591],{"class":5557,"line":5833},[5555,10570,6342],{"class":5595},[5555,10572,10573],{"class":5634}," names",[5555,10575,6348],{"class":5603},[5555,10577,10505],{"class":5634},[5555,10579,7853],{"class":5603},[5555,10581,6359],{"class":5616},[5555,10583,5620],{"class":5603},[5555,10585,5434],{"class":5616},[5555,10587,5620],{"class":5603},[5555,10589,10590],{"class":5634},"keys",[5555,10592,5779],{"class":5603},[5555,10594,10595],{"class":5557,"line":5866},[5555,10596,5751],{"class":5603},[5555,10598,10599],{"class":5557,"line":5871},[5555,10600,10601],{"class":5757},"    \u002F\u002F Лише значення\n",[5555,10603,10604,10606,10609,10611,10613,10615,10617,10619,10621,10623,10626],{"class":5557,"line":5877},[5555,10605,6342],{"class":5595},[5555,10607,10608],{"class":5634}," points",[5555,10610,6348],{"class":5603},[5555,10612,10505],{"class":5634},[5555,10614,7853],{"class":5603},[5555,10616,6359],{"class":5616},[5555,10618,5620],{"class":5603},[5555,10620,5434],{"class":5616},[5555,10622,5620],{"class":5603},[5555,10624,10625],{"class":5634},"values",[5555,10627,5779],{"class":5603},[5555,10629,10630],{"class":5557,"line":5900},[5555,10631,5751],{"class":5603},[5555,10633,10634,10636,10638,10640,10642,10645],{"class":5557,"line":5918},[5555,10635,5617],{"class":5616},[5555,10637,5620],{"class":5603},[5555,10639,6067],{"class":5634},[5555,10641,6070],{"class":5603},[5555,10643,10644],{"class":5565},"\"Names: \"",[5555,10646,5779],{"class":5603},[5555,10648,10649,10651,10653,10655,10657,10660,10662,10665,10667,10669,10671,10673,10675,10678,10680,10682],{"class":5557,"line":5923},[5555,10650,6043],{"class":5561},[5555,10652,5439],{"class":5603},[5555,10654,9664],{"class":5595},[5555,10656,9667],{"class":5595},[5555,10658,10659],{"class":5634}," name",[5555,10661,6052],{"class":5603},[5555,10663,10664],{"class":5634},"names",[5555,10666,9197],{"class":5603},[5555,10668,6359],{"class":5616},[5555,10670,5620],{"class":5603},[5555,10672,6067],{"class":5634},[5555,10674,6070],{"class":5603},[5555,10676,10677],{"class":5634},"name",[5555,10679,6070],{"class":5603},[5555,10681,6078],{"class":5565},[5555,10683,5779],{"class":5603},[5555,10685,10686],{"class":5557,"line":5929},[5555,10687,5751],{"class":5603},[5555,10689,10690,10692,10694,10696,10698,10700,10702,10705],{"class":5557,"line":5966},[5555,10691,5617],{"class":5616},[5555,10693,5620],{"class":5603},[5555,10695,6067],{"class":5634},[5555,10697,6070],{"class":5603},[5555,10699,6094],{"class":5565},[5555,10701,6098],{"class":6097},[5555,10703,10704],{"class":5565},"Scores: \"",[5555,10706,5779],{"class":5603},[5555,10708,10709,10711,10713,10715,10718,10720,10723,10725,10727,10729,10731,10733,10736,10738,10740],{"class":5557,"line":5989},[5555,10710,6043],{"class":5561},[5555,10712,5439],{"class":5603},[5555,10714,5596],{"class":5595},[5555,10716,10717],{"class":5634}," score",[5555,10719,6052],{"class":5603},[5555,10721,10722],{"class":5634},"points",[5555,10724,9197],{"class":5603},[5555,10726,6359],{"class":5616},[5555,10728,5620],{"class":5603},[5555,10730,6067],{"class":5634},[5555,10732,6070],{"class":5603},[5555,10734,10735],{"class":5634},"score",[5555,10737,6070],{"class":5603},[5555,10739,6078],{"class":5565},[5555,10741,5779],{"class":5603},[5555,10743,10744,10746,10748,10750,10752,10754,10756,10758],{"class":5557,"line":5994},[5555,10745,5617],{"class":5616},[5555,10747,5620],{"class":5603},[5555,10749,6067],{"class":5634},[5555,10751,6070],{"class":5603},[5555,10753,6094],{"class":5565},[5555,10755,6098],{"class":6097},[5555,10757,6094],{"class":5565},[5555,10759,5779],{"class":5603},[5555,10761,10762],{"class":5557,"line":6000},[5555,10763,5751],{"class":5603},[5555,10765,10766,10768,10770],{"class":5557,"line":6029},[5555,10767,6113],{"class":5561},[5555,10769,6116],{"class":5641},[5555,10771,5779],{"class":5603},[5555,10773,10774],{"class":5557,"line":6034},[5555,10775,6124],{"class":5603},[6587,10777,10779,10783],{"title":10778},".\u002FKeysValuesExample",[6591,10780,10782],{"className":10781},[5557],"Names: Alice Bob Charlie",[6591,10784,10786],{"className":10785},[5557],"Scores: 95 87 92",[5539,10788,10790,10791,10794],{"id":10789},"_3️⃣-all-view-перетворення-контейнера-в-view","3️⃣ ",[5413,10792,10793],{},"All View"," — перетворення контейнера в view",[5544,10796,10799],{"className":5546,"code":10797,"filename":10798,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Cranges>\n\nint main()\n{\n    std::vector\u003Cint> numbers = {1, 2, 3, 4, 5};\n    \n    \u002F\u002F Два способи створення view на весь контейнер:\n    auto view1 = std::views::all(numbers);\n    auto view2 = std::ranges::ref_view(numbers);\n    \n    \u002F\u002F Зручно для передачі в функції\n    auto processRange = [](auto range) {\n        for (int n : range)\n            std::cout \u003C\u003C n \u003C\u003C \" \";\n        std::cout \u003C\u003C \"\\n\";\n    };\n    \n    processRange(std::views::all(numbers));\n    \n    return 0;\n}\n","AllView.cpp",[5425,10800,10801,10807,10813,10819,10823,10831,10835,10873,10877,10882,10908,10934,10938,10943,10959,10977,10996,11014,11018,11022,11046,11050,11058],{"__ignoreMap":5551},[5555,10802,10803,10805],{"class":5557,"line":5558},[5555,10804,5562],{"class":5561},[5555,10806,5566],{"class":5565},[5555,10808,10809,10811],{"class":5557,"line":5569},[5555,10810,5562],{"class":5561},[5555,10812,5574],{"class":5565},[5555,10814,10815,10817],{"class":5557,"line":5577},[5555,10816,5562],{"class":5561},[5555,10818,6206],{"class":5565},[5555,10820,10821],{"class":5557,"line":5585},[5555,10822,5589],{"emptyLinePlaceholder":5588},[5555,10824,10825,10827,10829],{"class":5557,"line":5592},[5555,10826,5596],{"class":5595},[5555,10828,5600],{"class":5599},[5555,10830,5604],{"class":5603},[5555,10832,10833],{"class":5557,"line":5607},[5555,10834,5610],{"class":5603},[5555,10836,10837,10839,10841,10843,10845,10847,10849,10851,10853,10855,10857,10859,10861,10863,10865,10867,10869,10871],{"class":5557,"line":5613},[5555,10838,5617],{"class":5616},[5555,10840,5620],{"class":5603},[5555,10842,5623],{"class":5616},[5555,10844,5626],{"class":5603},[5555,10846,5596],{"class":5595},[5555,10848,5631],{"class":5603},[5555,10850,5635],{"class":5634},[5555,10852,5638],{"class":5603},[5555,10854,5642],{"class":5641},[5555,10856,5645],{"class":5603},[5555,10858,5648],{"class":5641},[5555,10860,5645],{"class":5603},[5555,10862,5653],{"class":5641},[5555,10864,5645],{"class":5603},[5555,10866,5658],{"class":5641},[5555,10868,5645],{"class":5603},[5555,10870,5663],{"class":5641},[5555,10872,5745],{"class":5603},[5555,10874,10875],{"class":5557,"line":5694},[5555,10876,5751],{"class":5603},[5555,10878,10879],{"class":5557,"line":5748},[5555,10880,10881],{"class":5757},"    \u002F\u002F Два способи створення view на весь контейнер:\n",[5555,10883,10884,10886,10889,10891,10893,10895,10897,10899,10902,10904,10906],{"class":5557,"line":5754},[5555,10885,6342],{"class":5595},[5555,10887,10888],{"class":5634}," view1",[5555,10890,6348],{"class":5603},[5555,10892,6359],{"class":5616},[5555,10894,5620],{"class":5603},[5555,10896,5434],{"class":5616},[5555,10898,5620],{"class":5603},[5555,10900,10901],{"class":5599},"all",[5555,10903,5792],{"class":5603},[5555,10905,5635],{"class":5634},[5555,10907,5915],{"class":5603},[5555,10909,10910,10912,10915,10917,10919,10921,10923,10925,10928,10930,10932],{"class":5557,"line":5761},[5555,10911,6342],{"class":5595},[5555,10913,10914],{"class":5634}," view2",[5555,10916,6348],{"class":5603},[5555,10918,6359],{"class":5616},[5555,10920,5620],{"class":5603},[5555,10922,6499],{"class":5616},[5555,10924,5620],{"class":5603},[5555,10926,10927],{"class":5599},"ref_view",[5555,10929,5792],{"class":5603},[5555,10931,5635],{"class":5634},[5555,10933,5915],{"class":5603},[5555,10935,10936],{"class":5557,"line":5782},[5555,10937,5751],{"class":5603},[5555,10939,10940],{"class":5557,"line":5815},[5555,10941,10942],{"class":5757},"    \u002F\u002F Зручно для передачі в функції\n",[5555,10944,10945,10947,10950,10953,10955,10957],{"class":5557,"line":5833},[5555,10946,6342],{"class":5595},[5555,10948,10949],{"class":5634}," processRange",[5555,10951,10952],{"class":5603}," = [](",[5555,10954,8105],{"class":5595},[5555,10956,8514],{"class":5634},[5555,10958,9556],{"class":5603},[5555,10960,10961,10964,10966,10968,10970,10972,10975],{"class":5557,"line":5866},[5555,10962,10963],{"class":5561},"        for",[5555,10965,5439],{"class":5603},[5555,10967,5596],{"class":5595},[5555,10969,5841],{"class":5634},[5555,10971,6052],{"class":5603},[5555,10973,10974],{"class":5634},"range",[5555,10976,5897],{"class":5603},[5555,10978,10979,10982,10984,10986,10988,10990,10992,10994],{"class":5557,"line":5871},[5555,10980,10981],{"class":5616},"            std",[5555,10983,5620],{"class":5603},[5555,10985,6067],{"class":5634},[5555,10987,6070],{"class":5603},[5555,10989,6073],{"class":5634},[5555,10991,6070],{"class":5603},[5555,10993,6078],{"class":5565},[5555,10995,5779],{"class":5603},[5555,10997,10998,11000,11002,11004,11006,11008,11010,11012],{"class":5557,"line":5877},[5555,10999,6062],{"class":5616},[5555,11001,5620],{"class":5603},[5555,11003,6067],{"class":5634},[5555,11005,6070],{"class":5603},[5555,11007,6094],{"class":5565},[5555,11009,6098],{"class":6097},[5555,11011,6094],{"class":5565},[5555,11013,5779],{"class":5603},[5555,11015,11016],{"class":5557,"line":5900},[5555,11017,10557],{"class":5603},[5555,11019,11020],{"class":5557,"line":5918},[5555,11021,5751],{"class":5603},[5555,11023,11024,11027,11029,11031,11033,11035,11037,11039,11041,11043],{"class":5557,"line":5923},[5555,11025,11026],{"class":5599},"    processRange",[5555,11028,5792],{"class":5603},[5555,11030,6359],{"class":5616},[5555,11032,5620],{"class":5603},[5555,11034,5434],{"class":5616},[5555,11036,5620],{"class":5603},[5555,11038,10901],{"class":5599},[5555,11040,5792],{"class":5603},[5555,11042,5635],{"class":5634},[5555,11044,11045],{"class":5603},"));\n",[5555,11047,11048],{"class":5557,"line":5929},[5555,11049,5751],{"class":5603},[5555,11051,11052,11054,11056],{"class":5557,"line":5966},[5555,11053,6113],{"class":5561},[5555,11055,6116],{"class":5641},[5555,11057,5779],{"class":5603},[5555,11059,11060],{"class":5557,"line":5989},[5555,11061,6124],{"class":5603},[5524,11063],{},[5527,11065,11067],{"id":11066},"повна-таблиця-views-c20","Повна таблиця views C++20",[7550,11069,11070,11082],{},[7553,11071,11072],{},[7556,11073,11074,11076,11079],{},[7559,11075,7684],{"align":7561},[7559,11077,11078],{"align":7561},"Опис",[7559,11080,11081],{"align":7561},"Приклад",[7570,11083,11084,11099,11114,11129,11144,11159,11174,11189,11204,11219,11234,11247,11260,11273,11288,11303,11318],{},[7556,11085,11086,11091,11094],{},[7575,11087,11088],{"align":7561},[5425,11089,11090],{},"empty\u003CT>",[7575,11092,11093],{"align":7561},"Порожній діапазон",[7575,11095,11096],{"align":7561},[5425,11097,11098],{},"views::empty\u003Cint>",[7556,11100,11101,11106,11109],{},[7575,11102,11103],{"align":7561},[5425,11104,11105],{},"single(value)",[7575,11107,11108],{"align":7561},"Один елемент",[7575,11110,11111],{"align":7561},[5425,11112,11113],{},"views::single(42)",[7556,11115,11116,11121,11124],{},[7575,11117,11118],{"align":7561},[5425,11119,11120],{},"iota(start, [end])",[7575,11122,11123],{"align":7561},"Послідовність чисел",[7575,11125,11126],{"align":7561},[5425,11127,11128],{},"views::iota(1, 10)",[7556,11130,11131,11136,11139],{},[7575,11132,11133],{"align":7561},[5425,11134,11135],{},"repeat(value, [n])",[7575,11137,11138],{"align":7561},"Повторення значення",[7575,11140,11141],{"align":7561},[5425,11142,11143],{},"views::repeat(5, 10)",[7556,11145,11146,11151,11154],{},[7575,11147,11148],{"align":7561},[5425,11149,11150],{},"filter(pred)",[7575,11152,11153],{"align":7561},"Фільтрація",[7575,11155,11156],{"align":7561},[5425,11157,11158],{},"views::filter([](int n) { return n > 0; })",[7556,11160,11161,11166,11169],{},[7575,11162,11163],{"align":7561},[5425,11164,11165],{},"transform(func)",[7575,11167,11168],{"align":7561},"Трансформація",[7575,11170,11171],{"align":7561},[5425,11172,11173],{},"views::transform([](int n) { return n * 2; })",[7556,11175,11176,11181,11184],{},[7575,11177,11178],{"align":7561},[5425,11179,11180],{},"take(n)",[7575,11182,11183],{"align":7561},"Перші n елементів",[7575,11185,11186],{"align":7561},[5425,11187,11188],{},"views::take(5)",[7556,11190,11191,11196,11199],{},[7575,11192,11193],{"align":7561},[5425,11194,11195],{},"take_while(pred)",[7575,11197,11198],{"align":7561},"Доки true",[7575,11200,11201],{"align":7561},[5425,11202,11203],{},"views::take_while([](int n) { return n \u003C 10; })",[7556,11205,11206,11211,11214],{},[7575,11207,11208],{"align":7561},[5425,11209,11210],{},"drop(n)",[7575,11212,11213],{"align":7561},"Пропустити n",[7575,11215,11216],{"align":7561},[5425,11217,11218],{},"views::drop(3)",[7556,11220,11221,11226,11229],{},[7575,11222,11223],{"align":7561},[5425,11224,11225],{},"drop_while(pred)",[7575,11227,11228],{"align":7561},"Пропустити доки true",[7575,11230,11231],{"align":7561},[5425,11232,11233],{},"views::drop_while([](int n) { return n \u003C 5; })",[7556,11235,11236,11240,11243],{},[7575,11237,11238],{"align":7561},[5425,11239,10274],{},[7575,11241,11242],{"align":7561},"Зворотний порядок",[7575,11244,11245],{"align":7561},[5425,11246,10167],{},[7556,11248,11249,11253,11256],{},[7575,11250,11251],{"align":7561},[5425,11252,10590],{},[7575,11254,11255],{"align":7561},"Ключі map\u002Fpair",[7575,11257,11258],{"align":7561},[5425,11259,10434],{},[7556,11261,11262,11266,11269],{},[7575,11263,11264],{"align":7561},[5425,11265,10625],{},[7575,11267,11268],{"align":7561},"Значення map\u002Fpair",[7575,11270,11271],{"align":7561},[5425,11272,10437],{},[7556,11274,11275,11280,11283],{},[7575,11276,11277],{"align":7561},[5425,11278,11279],{},"elements\u003CN>",[7575,11281,11282],{"align":7561},"N-й елемент tuple",[7575,11284,11285],{"align":7561},[5425,11286,11287],{},"views::elements\u003C0>",[7556,11289,11290,11295,11298],{},[7575,11291,11292],{"align":7561},[5425,11293,11294],{},"split(delim)",[7575,11296,11297],{"align":7561},"Розбиття на підрядки",[7575,11299,11300],{"align":7561},[5425,11301,11302],{},"views::split(' ')",[7556,11304,11305,11310,11313],{},[7575,11306,11307],{"align":7561},[5425,11308,11309],{},"join",[7575,11311,11312],{"align":7561},"Об'єднання діапазонів",[7575,11314,11315],{"align":7561},[5425,11316,11317],{},"views::join",[7556,11319,11320,11324,11327],{},[7575,11321,11322],{"align":7561},[5425,11323,10901],{},[7575,11325,11326],{"align":7561},"Весь контейнер як view",[7575,11328,11329],{"align":7561},[5425,11330,11331],{},"views::all(vec)",[5524,11333],{},[5527,11335,11337,11338],{"id":11336},"композиція-views-piping-оператор","Композиція views: piping оператор ",[5425,11339,5454],{},[5532,11341,11342,11345,11346,11349,11350,6635],{},[5413,11343,11344],{},"Найпотужніша"," фіча ranges — можливість ",[5413,11347,11348],{},"компонувати"," views через оператор ",[5425,11351,5454],{},[5544,11353,11356],{"className":5546,"code":11354,"filename":11355,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Cranges>\n\nint main()\n{\n    std::vector\u003Cint> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n    \n    \u002F\u002F Конвеєр обробки\n    auto result = numbers\n        | std::views::filter([](int n) { return n % 2 == 0; })  \u002F\u002F Парні\n        | std::views::transform([](int n) { return n * n; })    \u002F\u002F Квадрати\n        | std::views::take(3)                                     \u002F\u002F Перші 3\n        | std::views::reverse;                                    \u002F\u002F Зворотний порядок\n    \n    std::cout \u003C\u003C \"Result: \";\n    for (int n : result)\n        std::cout \u003C\u003C n \u003C\u003C \" \";\n    std::cout \u003C\u003C \"\\n\";\n    \n    return 0;\n}\n","PipingOperator.cpp",[5425,11357,11358,11364,11370,11376,11380,11388,11392,11450,11454,11459,11469,11509,11544,11568,11588,11592,11607,11623,11641,11659,11663,11671],{"__ignoreMap":5551},[5555,11359,11360,11362],{"class":5557,"line":5558},[5555,11361,5562],{"class":5561},[5555,11363,5566],{"class":5565},[5555,11365,11366,11368],{"class":5557,"line":5569},[5555,11367,5562],{"class":5561},[5555,11369,5574],{"class":5565},[5555,11371,11372,11374],{"class":5557,"line":5577},[5555,11373,5562],{"class":5561},[5555,11375,6206],{"class":5565},[5555,11377,11378],{"class":5557,"line":5585},[5555,11379,5589],{"emptyLinePlaceholder":5588},[5555,11381,11382,11384,11386],{"class":5557,"line":5592},[5555,11383,5596],{"class":5595},[5555,11385,5600],{"class":5599},[5555,11387,5604],{"class":5603},[5555,11389,11390],{"class":5557,"line":5607},[5555,11391,5610],{"class":5603},[5555,11393,11394,11396,11398,11400,11402,11404,11406,11408,11410,11412,11414,11416,11418,11420,11422,11424,11426,11428,11430,11432,11434,11436,11438,11440,11442,11444,11446,11448],{"class":5557,"line":5613},[5555,11395,5617],{"class":5616},[5555,11397,5620],{"class":5603},[5555,11399,5623],{"class":5616},[5555,11401,5626],{"class":5603},[5555,11403,5596],{"class":5595},[5555,11405,5631],{"class":5603},[5555,11407,5635],{"class":5634},[5555,11409,5638],{"class":5603},[5555,11411,5642],{"class":5641},[5555,11413,5645],{"class":5603},[5555,11415,5648],{"class":5641},[5555,11417,5645],{"class":5603},[5555,11419,5653],{"class":5641},[5555,11421,5645],{"class":5603},[5555,11423,5658],{"class":5641},[5555,11425,5645],{"class":5603},[5555,11427,5663],{"class":5641},[5555,11429,5645],{"class":5603},[5555,11431,5668],{"class":5641},[5555,11433,5645],{"class":5603},[5555,11435,5673],{"class":5641},[5555,11437,5645],{"class":5603},[5555,11439,5678],{"class":5641},[5555,11441,5645],{"class":5603},[5555,11443,5683],{"class":5641},[5555,11445,5645],{"class":5603},[5555,11447,5688],{"class":5641},[5555,11449,5745],{"class":5603},[5555,11451,11452],{"class":5557,"line":5694},[5555,11453,5751],{"class":5603},[5555,11455,11456],{"class":5557,"line":5748},[5555,11457,11458],{"class":5757},"    \u002F\u002F Конвеєр обробки\n",[5555,11460,11461,11463,11465,11467],{"class":5557,"line":5754},[5555,11462,6342],{"class":5595},[5555,11464,6345],{"class":5634},[5555,11466,6348],{"class":5603},[5555,11468,6351],{"class":5634},[5555,11470,11471,11473,11475,11477,11479,11481,11483,11485,11487,11489,11491,11493,11495,11497,11499,11501,11503,11506],{"class":5557,"line":5761},[5555,11472,6356],{"class":5603},[5555,11474,6359],{"class":5616},[5555,11476,5620],{"class":5603},[5555,11478,5434],{"class":5616},[5555,11480,5620],{"class":5603},[5555,11482,6368],{"class":5599},[5555,11484,6371],{"class":5603},[5555,11486,5596],{"class":5595},[5555,11488,5841],{"class":5634},[5555,11490,5844],{"class":5603},[5555,11492,5847],{"class":5561},[5555,11494,5841],{"class":5634},[5555,11496,5852],{"class":5603},[5555,11498,5648],{"class":5641},[5555,11500,5857],{"class":5603},[5555,11502,5860],{"class":5641},[5555,11504,11505],{"class":5603},"; })",[5555,11507,11508],{"class":5757},"  \u002F\u002F Парні\n",[5555,11510,11511,11513,11515,11517,11519,11521,11523,11525,11527,11529,11531,11533,11535,11537,11539,11541],{"class":5557,"line":5782},[5555,11512,6356],{"class":5603},[5555,11514,6359],{"class":5616},[5555,11516,5620],{"class":5603},[5555,11518,5434],{"class":5616},[5555,11520,5620],{"class":5603},[5555,11522,5936],{"class":5599},[5555,11524,6371],{"class":5603},[5555,11526,5596],{"class":5595},[5555,11528,5841],{"class":5634},[5555,11530,5844],{"class":5603},[5555,11532,5847],{"class":5561},[5555,11534,5841],{"class":5634},[5555,11536,5982],{"class":5603},[5555,11538,6073],{"class":5634},[5555,11540,11505],{"class":5603},[5555,11542,11543],{"class":5757},"    \u002F\u002F Квадрати\n",[5555,11545,11546,11548,11550,11552,11554,11556,11558,11560,11562,11565],{"class":5557,"line":5815},[5555,11547,6356],{"class":5603},[5555,11549,6359],{"class":5616},[5555,11551,5620],{"class":5603},[5555,11553,5434],{"class":5616},[5555,11555,5620],{"class":5603},[5555,11557,6407],{"class":5599},[5555,11559,5792],{"class":5603},[5555,11561,5653],{"class":5641},[5555,11563,11564],{"class":5603},")",[5555,11566,11567],{"class":5757},"                                     \u002F\u002F Перші 3\n",[5555,11569,11570,11572,11574,11576,11578,11580,11582,11585],{"class":5557,"line":5833},[5555,11571,6356],{"class":5603},[5555,11573,6359],{"class":5616},[5555,11575,5620],{"class":5603},[5555,11577,5434],{"class":5616},[5555,11579,5620],{"class":5603},[5555,11581,10274],{"class":5634},[5555,11583,11584],{"class":5603},";",[5555,11586,11587],{"class":5757},"                                    \u002F\u002F Зворотний порядок\n",[5555,11589,11590],{"class":5557,"line":5866},[5555,11591,5751],{"class":5603},[5555,11593,11594,11596,11598,11600,11602,11605],{"class":5557,"line":5871},[5555,11595,5617],{"class":5616},[5555,11597,5620],{"class":5603},[5555,11599,6067],{"class":5634},[5555,11601,6070],{"class":5603},[5555,11603,11604],{"class":5565},"\"Result: \"",[5555,11606,5779],{"class":5603},[5555,11608,11609,11611,11613,11615,11617,11619,11621],{"class":5557,"line":5877},[5555,11610,6043],{"class":5561},[5555,11612,5439],{"class":5603},[5555,11614,5596],{"class":5595},[5555,11616,5841],{"class":5634},[5555,11618,6052],{"class":5603},[5555,11620,6476],{"class":5634},[5555,11622,5897],{"class":5603},[5555,11624,11625,11627,11629,11631,11633,11635,11637,11639],{"class":5557,"line":5900},[5555,11626,6062],{"class":5616},[5555,11628,5620],{"class":5603},[5555,11630,6067],{"class":5634},[5555,11632,6070],{"class":5603},[5555,11634,6073],{"class":5634},[5555,11636,6070],{"class":5603},[5555,11638,6078],{"class":5565},[5555,11640,5779],{"class":5603},[5555,11642,11643,11645,11647,11649,11651,11653,11655,11657],{"class":5557,"line":5918},[5555,11644,5617],{"class":5616},[5555,11646,5620],{"class":5603},[5555,11648,6067],{"class":5634},[5555,11650,6070],{"class":5603},[5555,11652,6094],{"class":5565},[5555,11654,6098],{"class":6097},[5555,11656,6094],{"class":5565},[5555,11658,5779],{"class":5603},[5555,11660,11661],{"class":5557,"line":5923},[5555,11662,5751],{"class":5603},[5555,11664,11665,11667,11669],{"class":5557,"line":5929},[5555,11666,6113],{"class":5561},[5555,11668,6116],{"class":5641},[5555,11670,5779],{"class":5603},[5555,11672,11673],{"class":5557,"line":5966},[5555,11674,6124],{"class":5603},[6587,11676,11678],{"title":11677},".\u002FPipingOperator",[6591,11679,11681],{"className":11680},[5557],"Result: 36 16 4",[7238,11683,11685],{"title":11684},"Конвеєр трансформацій",[5544,11686,11688],{"className":7243,"code":11687,"language":7245,"meta":5551,"style":5551},"@startuml\nskinparam backgroundColor transparent\nskinparam defaultFontName \"JetBrains Mono\"\nskinparam defaultFontSize 12\n\nrectangle \"numbers\\n[1,2,3,4,5,6,7,8,9,10]\" as input #3B82F6\n\nrectangle \"filter парних\\n[2,4,6,8,10]\" as filter #10B981\n\nrectangle \"transform n²\\n[4,16,36,64,100]\" as transform #F59E0B\n\nrectangle \"take(3)\\n[4,16,36]\" as take #EF4444\n\nrectangle \"reverse\\n[36,16,4]\" as reverse #8B5CF6\n\ninput -> filter : |\nfilter -> transform : |\ntransform -> take : |\ntake -> reverse : |\n\nnote bottom of input\n  Вихідні дані\nend note\n\nnote bottom of reverse\n  Фінальний результат\n  Обчислюється ЛЕДАЧО\n  при ітерації\nend note\n\n@enduml\n",[5425,11689,11690,11694,11698,11702,11706,11710,11715,11719,11724,11728,11733,11737,11742,11746,11751,11755,11760,11765,11770,11775,11779,11784,11789,11793,11797,11802,11807,11812,11817,11821,11825],{"__ignoreMap":5551},[5555,11691,11692],{"class":5557,"line":5558},[5555,11693,7252],{},[5555,11695,11696],{"class":5557,"line":5569},[5555,11697,7257],{},[5555,11699,11700],{"class":5557,"line":5577},[5555,11701,7262],{},[5555,11703,11704],{"class":5557,"line":5585},[5555,11705,8244],{},[5555,11707,11708],{"class":5557,"line":5592},[5555,11709,5589],{"emptyLinePlaceholder":5588},[5555,11711,11712],{"class":5557,"line":5607},[5555,11713,11714],{},"rectangle \"numbers\\n[1,2,3,4,5,6,7,8,9,10]\" as input #3B82F6\n",[5555,11716,11717],{"class":5557,"line":5613},[5555,11718,5589],{"emptyLinePlaceholder":5588},[5555,11720,11721],{"class":5557,"line":5694},[5555,11722,11723],{},"rectangle \"filter парних\\n[2,4,6,8,10]\" as filter #10B981\n",[5555,11725,11726],{"class":5557,"line":5748},[5555,11727,5589],{"emptyLinePlaceholder":5588},[5555,11729,11730],{"class":5557,"line":5754},[5555,11731,11732],{},"rectangle \"transform n²\\n[4,16,36,64,100]\" as transform #F59E0B\n",[5555,11734,11735],{"class":5557,"line":5761},[5555,11736,5589],{"emptyLinePlaceholder":5588},[5555,11738,11739],{"class":5557,"line":5782},[5555,11740,11741],{},"rectangle \"take(3)\\n[4,16,36]\" as take #EF4444\n",[5555,11743,11744],{"class":5557,"line":5815},[5555,11745,5589],{"emptyLinePlaceholder":5588},[5555,11747,11748],{"class":5557,"line":5833},[5555,11749,11750],{},"rectangle \"reverse\\n[36,16,4]\" as reverse #8B5CF6\n",[5555,11752,11753],{"class":5557,"line":5866},[5555,11754,5589],{"emptyLinePlaceholder":5588},[5555,11756,11757],{"class":5557,"line":5871},[5555,11758,11759],{},"input -> filter : |\n",[5555,11761,11762],{"class":5557,"line":5877},[5555,11763,11764],{},"filter -> transform : |\n",[5555,11766,11767],{"class":5557,"line":5900},[5555,11768,11769],{},"transform -> take : |\n",[5555,11771,11772],{"class":5557,"line":5918},[5555,11773,11774],{},"take -> reverse : |\n",[5555,11776,11777],{"class":5557,"line":5923},[5555,11778,5589],{"emptyLinePlaceholder":5588},[5555,11780,11781],{"class":5557,"line":5929},[5555,11782,11783],{},"note bottom of input\n",[5555,11785,11786],{"class":5557,"line":5966},[5555,11787,11788],{},"  Вихідні дані\n",[5555,11790,11791],{"class":5557,"line":5989},[5555,11792,7498],{},[5555,11794,11795],{"class":5557,"line":5994},[5555,11796,5589],{"emptyLinePlaceholder":5588},[5555,11798,11799],{"class":5557,"line":6000},[5555,11800,11801],{},"note bottom of reverse\n",[5555,11803,11804],{"class":5557,"line":6029},[5555,11805,11806],{},"  Фінальний результат\n",[5555,11808,11809],{"class":5557,"line":6034},[5555,11810,11811],{},"  Обчислюється ЛЕДАЧО\n",[5555,11813,11814],{"class":5557,"line":6040},[5555,11815,11816],{},"  при ітерації\n",[5555,11818,11819],{"class":5557,"line":6059},[5555,11820,7498],{},[5555,11822,11823],{"class":5557,"line":6083},[5555,11824,5589],{"emptyLinePlaceholder":5588},[5555,11826,11827],{"class":5557,"line":6105},[5555,11828,7543],{},[5532,11830,11831],{},[5413,11832,11833],{},"Як це працює під капотом?",[5544,11835,11837],{"className":5546,"code":11836,"language":5549,"meta":5551,"style":5551},"\u002F\u002F Розгортання оператора |\nauto result = numbers\n    | views::filter(pred1)\n    | views::transform(func1);\n\n\u002F\u002F Еквівалентно:\nauto step1 = views::filter(pred1)(numbers);\nauto result = views::transform(func1)(step1);\n\n\u002F\u002F Або через вкладені виклики:\nauto result = views::transform(func1)(\n                  views::filter(pred1)(numbers));\n",[5425,11838,11839,11844,11854,11872,11889,11893,11898,11924,11949,11953,11958,11979],{"__ignoreMap":5551},[5555,11840,11841],{"class":5557,"line":5558},[5555,11842,11843],{"class":5757},"\u002F\u002F Розгортання оператора |\n",[5555,11845,11846,11848,11850,11852],{"class":5557,"line":5569},[5555,11847,8105],{"class":5595},[5555,11849,6345],{"class":5634},[5555,11851,6348],{"class":5603},[5555,11853,6351],{"class":5634},[5555,11855,11856,11859,11861,11863,11865,11867,11870],{"class":5557,"line":5577},[5555,11857,11858],{"class":5603},"    | ",[5555,11860,5434],{"class":5616},[5555,11862,5620],{"class":5603},[5555,11864,6368],{"class":5599},[5555,11866,5792],{"class":5603},[5555,11868,11869],{"class":5634},"pred1",[5555,11871,5897],{"class":5603},[5555,11873,11874,11876,11878,11880,11882,11884,11887],{"class":5557,"line":5585},[5555,11875,11858],{"class":5603},[5555,11877,5434],{"class":5616},[5555,11879,5620],{"class":5603},[5555,11881,5936],{"class":5599},[5555,11883,5792],{"class":5603},[5555,11885,11886],{"class":5634},"func1",[5555,11888,5915],{"class":5603},[5555,11890,11891],{"class":5557,"line":5592},[5555,11892,5589],{"emptyLinePlaceholder":5588},[5555,11894,11895],{"class":5557,"line":5607},[5555,11896,11897],{"class":5757},"\u002F\u002F Еквівалентно:\n",[5555,11899,11900,11902,11905,11907,11909,11911,11913,11915,11917,11920,11922],{"class":5557,"line":5613},[5555,11901,8105],{"class":5595},[5555,11903,11904],{"class":5634}," step1",[5555,11906,6348],{"class":5603},[5555,11908,5434],{"class":5616},[5555,11910,5620],{"class":5603},[5555,11912,6368],{"class":5599},[5555,11914,5792],{"class":5603},[5555,11916,11869],{"class":5634},[5555,11918,11919],{"class":5603},")(",[5555,11921,5635],{"class":5634},[5555,11923,5915],{"class":5603},[5555,11925,11926,11928,11930,11932,11934,11936,11938,11940,11942,11944,11947],{"class":5557,"line":5694},[5555,11927,8105],{"class":5595},[5555,11929,6345],{"class":5634},[5555,11931,6348],{"class":5603},[5555,11933,5434],{"class":5616},[5555,11935,5620],{"class":5603},[5555,11937,5936],{"class":5599},[5555,11939,5792],{"class":5603},[5555,11941,11886],{"class":5634},[5555,11943,11919],{"class":5603},[5555,11945,11946],{"class":5634},"step1",[5555,11948,5915],{"class":5603},[5555,11950,11951],{"class":5557,"line":5748},[5555,11952,5589],{"emptyLinePlaceholder":5588},[5555,11954,11955],{"class":5557,"line":5754},[5555,11956,11957],{"class":5757},"\u002F\u002F Або через вкладені виклики:\n",[5555,11959,11960,11962,11964,11966,11968,11970,11972,11974,11976],{"class":5557,"line":5761},[5555,11961,8105],{"class":5595},[5555,11963,6345],{"class":5634},[5555,11965,6348],{"class":5603},[5555,11967,5434],{"class":5616},[5555,11969,5620],{"class":5603},[5555,11971,5936],{"class":5599},[5555,11973,5792],{"class":5603},[5555,11975,11886],{"class":5634},[5555,11977,11978],{"class":5603},")(\n",[5555,11980,11981,11984,11986,11988,11990,11992,11994,11996],{"class":5557,"line":5782},[5555,11982,11983],{"class":5616},"                  views",[5555,11985,5620],{"class":5603},[5555,11987,6368],{"class":5599},[5555,11989,5792],{"class":5603},[5555,11991,11869],{"class":5634},[5555,11993,11919],{"class":5603},[5555,11995,5635],{"class":5634},[5555,11997,11045],{"class":5603},[7180,11999,12000,12005,12010,12046,12051,12126,12131,12210],{},[5532,12001,12002],{},[5413,12003,12004],{},"Порівняння з іншими мовами:",[5532,12006,12007],{},[5413,12008,12009],{},"Unix pipes:",[5544,12011,12015],{"className":12012,"code":12013,"language":12014,"meta":5551,"style":5551},"language-bash shiki shiki-themes light-plus dark-plus dark-plus","cat file.txt | grep \"error\" | head -10 | sort\n","bash",[5425,12016,12017],{"__ignoreMap":5551},[5555,12018,12019,12022,12025,12027,12030,12033,12035,12038,12041,12043],{"class":5557,"line":5558},[5555,12020,12021],{"class":5599},"cat",[5555,12023,12024],{"class":5565}," file.txt",[5555,12026,7853],{"class":5603},[5555,12028,12029],{"class":5599},"grep",[5555,12031,12032],{"class":5565}," \"error\"",[5555,12034,7853],{"class":5603},[5555,12036,12037],{"class":5599},"head",[5555,12039,12040],{"class":5595}," -10",[5555,12042,7853],{"class":5603},[5555,12044,12045],{"class":5599},"sort\n",[5532,12047,12048],{},[5413,12049,12050],{},"F# \u002F OCaml:",[5544,12052,12056],{"className":12053,"code":12054,"language":12055,"meta":5551,"style":5551},"language-fsharp shiki shiki-themes light-plus dark-plus dark-plus","numbers\n|> Seq.filter (fun n -> n % 2 = 0)\n|> Seq.map (fun n -> n * 2)\n|> Seq.take 10\n","fsharp",[5425,12057,12058,12062,12094,12116],{"__ignoreMap":5551},[5555,12059,12060],{"class":5557,"line":5558},[5555,12061,6351],{"class":5603},[5555,12063,12064,12067,12070,12073,12076,12079,12081,12084,12087,12090,12092],{"class":5557,"line":5569},[5555,12065,12066],{"class":5595},"|>",[5555,12068,12069],{"class":5603}," Seq.filter ",[5555,12071,12072],{"class":5595},"(fun",[5555,12074,12075],{"class":5634}," n ",[5555,12077,12078],{"class":5595},"->",[5555,12080,12075],{"class":5603},[5555,12082,12083],{"class":5595},"%",[5555,12085,12086],{"class":5641}," 2",[5555,12088,12089],{"class":5595}," =",[5555,12091,6116],{"class":5641},[5555,12093,5897],{"class":5595},[5555,12095,12096,12098,12101,12103,12105,12107,12109,12112,12114],{"class":5557,"line":5577},[5555,12097,12066],{"class":5595},[5555,12099,12100],{"class":5603}," Seq.map ",[5555,12102,12072],{"class":5595},[5555,12104,12075],{"class":5634},[5555,12106,12078],{"class":5595},[5555,12108,12075],{"class":5603},[5555,12110,12111],{"class":5595},"*",[5555,12113,12086],{"class":5641},[5555,12115,5897],{"class":5595},[5555,12117,12118,12120,12123],{"class":5557,"line":5585},[5555,12119,12066],{"class":5595},[5555,12121,12122],{"class":5603}," Seq.take ",[5555,12124,12125],{"class":5641},"10\n",[5532,12127,12128],{},[5413,12129,12130],{},"Rust:",[5544,12132,12136],{"className":12133,"code":12134,"language":12135,"meta":5551,"style":5551},"language-rust shiki shiki-themes light-plus dark-plus dark-plus","numbers\n    .iter()\n    .filter(|&n| n % 2 == 0)\n    .map(|&n| n * 2)\n    .take(10)\n","rust",[5425,12137,12138,12142,12152,12178,12198],{"__ignoreMap":5551},[5555,12139,12140],{"class":5557,"line":5558},[5555,12141,6351],{"class":5634},[5555,12143,12144,12147,12150],{"class":5557,"line":5569},[5555,12145,12146],{"class":5603},"    .",[5555,12148,12149],{"class":5599},"iter",[5555,12151,5604],{"class":5603},[5555,12153,12154,12156,12158,12161,12163,12166,12168,12170,12172,12174,12176],{"class":5557,"line":5577},[5555,12155,12146],{"class":5603},[5555,12157,6368],{"class":5599},[5555,12159,12160],{"class":5603},"(|&",[5555,12162,6073],{"class":5634},[5555,12164,12165],{"class":5603},"| ",[5555,12167,6073],{"class":5634},[5555,12169,5852],{"class":5603},[5555,12171,5648],{"class":5641},[5555,12173,5857],{"class":5603},[5555,12175,5860],{"class":5641},[5555,12177,5897],{"class":5603},[5555,12179,12180,12182,12184,12186,12188,12190,12192,12194,12196],{"class":5557,"line":5585},[5555,12181,12146],{"class":5603},[5555,12183,7209],{"class":5599},[5555,12185,12160],{"class":5603},[5555,12187,6073],{"class":5634},[5555,12189,12165],{"class":5603},[5555,12191,6073],{"class":5634},[5555,12193,5982],{"class":5603},[5555,12195,5648],{"class":5641},[5555,12197,5897],{"class":5603},[5555,12199,12200,12202,12204,12206,12208],{"class":5557,"line":5592},[5555,12201,12146],{"class":5603},[5555,12203,6407],{"class":5599},[5555,12205,5792],{"class":5603},[5555,12207,5688],{"class":5641},[5555,12209,5897],{"class":5603},[5532,12211,12212],{},"C++ Ranges приносить схожу елегантність!",[5524,12214],{},[5527,12216,12218],{"id":12217},"lazy-evaluation-чому-views-швидкі","Lazy Evaluation: чому views швидкі",[5532,12220,12221,12224,12225,12227],{},[5413,12222,12223],{},"Ледаче обчислення"," означає, що операції ",[5413,12226,6634],{},", а відкладаються до моменту, коли результат потрібен.",[5539,12229,12231],{"id":12230},"приклад-eager-vs-lazy","Приклад: eager vs lazy",[5544,12233,12236],{"className":5546,"code":12234,"filename":12235,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Cranges>\n#include \u003Calgorithm>\n\nint main()\n{\n    std::vector\u003Cint> numbers(1'000'000);\n    std::iota(numbers.begin(), numbers.end(), 1);  \u002F\u002F 1..1'000'000\n    \n    std::cout \u003C\u003C \"=== EAGER (STL) ===\\n\";\n    {\n        \u002F\u002F Крок 1: Фільтруємо парні (створює новий вектор!)\n        std::vector\u003Cint> evens;\n        std::copy_if(numbers.begin(), numbers.end(),\n                     std::back_inserter(evens),\n                     [](int n) { return n % 2 == 0; });\n        std::cout \u003C\u003C \"After filter: \" \u003C\u003C evens.size() \u003C\u003C \" elements\\n\";\n        \n        \u002F\u002F Крок 2: Беремо перші 10 (викидаємо 499'990 елементів!)\n        evens.resize(10);\n        std::cout \u003C\u003C \"After take: \" \u003C\u003C evens.size() \u003C\u003C \" elements\\n\";\n    }\n    \n    std::cout \u003C\u003C \"\\n=== LAZY (Ranges) ===\\n\";\n    {\n        \u002F\u002F Створюємо view (не обчислюється!)\n        auto view = numbers\n            | std::views::filter([](int n) { return n % 2 == 0; })\n            | std::views::take(10);\n        \n        std::cout \u003C\u003C \"View created (no computation yet)\\n\";\n        \n        \u002F\u002F Обчислення відбувається ТУТ\n        int count = 0;\n        for (int n : view)\n        {\n            ++count;\n            \u002F\u002F Обробляється лише 10 елементів!\n        }\n        std::cout \u003C\u003C \"Iterated: \" \u003C\u003C count \u003C\u003C \" elements\\n\";\n    }\n    \n    return 0;\n}\n","EagerVsLazy.cpp",[5425,12237,12238,12244,12250,12256,12262,12266,12274,12278,12301,12334,12338,12357,12362,12367,12385,12411,12426,12451,12484,12489,12494,12508,12539,12544,12548,12571,12575,12580,12591,12628,12648,12652,12671,12675,12680,12694,12711,12716,12726,12731,12736,12763,12767,12771,12779],{"__ignoreMap":5551},[5555,12239,12240,12242],{"class":5557,"line":5558},[5555,12241,5562],{"class":5561},[5555,12243,5566],{"class":5565},[5555,12245,12246,12248],{"class":5557,"line":5569},[5555,12247,5562],{"class":5561},[5555,12249,5574],{"class":5565},[5555,12251,12252,12254],{"class":5557,"line":5577},[5555,12253,5562],{"class":5561},[5555,12255,6206],{"class":5565},[5555,12257,12258,12260],{"class":5557,"line":5585},[5555,12259,5562],{"class":5561},[5555,12261,5582],{"class":5565},[5555,12263,12264],{"class":5557,"line":5592},[5555,12265,5589],{"emptyLinePlaceholder":5588},[5555,12267,12268,12270,12272],{"class":5557,"line":5607},[5555,12269,5596],{"class":5595},[5555,12271,5600],{"class":5599},[5555,12273,5604],{"class":5603},[5555,12275,12276],{"class":5557,"line":5613},[5555,12277,5610],{"class":5603},[5555,12279,12280,12282,12284,12286,12288,12290,12292,12294,12296,12299],{"class":5557,"line":5694},[5555,12281,5617],{"class":5616},[5555,12283,5620],{"class":5603},[5555,12285,5623],{"class":5616},[5555,12287,5626],{"class":5603},[5555,12289,5596],{"class":5595},[5555,12291,5631],{"class":5603},[5555,12293,5635],{"class":5599},[5555,12295,5792],{"class":5603},[5555,12297,12298],{"class":5641},"1'000'000",[5555,12300,5915],{"class":5603},[5555,12302,12303,12305,12307,12309,12311,12313,12315,12317,12319,12321,12323,12325,12327,12329,12331],{"class":5557,"line":5748},[5555,12304,5617],{"class":5616},[5555,12306,5620],{"class":5603},[5555,12308,8492],{"class":5599},[5555,12310,5792],{"class":5603},[5555,12312,5635],{"class":5634},[5555,12314,5428],{"class":5603},[5555,12316,5799],{"class":5599},[5555,12318,5802],{"class":5603},[5555,12320,5635],{"class":5634},[5555,12322,5428],{"class":5603},[5555,12324,5809],{"class":5599},[5555,12326,5802],{"class":5603},[5555,12328,5642],{"class":5641},[5555,12330,9814],{"class":5603},[5555,12332,12333],{"class":5757},"  \u002F\u002F 1..1'000'000\n",[5555,12335,12336],{"class":5557,"line":5754},[5555,12337,5751],{"class":5603},[5555,12339,12340,12342,12344,12346,12348,12351,12353,12355],{"class":5557,"line":5761},[5555,12341,5617],{"class":5616},[5555,12343,5620],{"class":5603},[5555,12345,6067],{"class":5634},[5555,12347,6070],{"class":5603},[5555,12349,12350],{"class":5565},"\"=== EAGER (STL) ===",[5555,12352,6098],{"class":6097},[5555,12354,6094],{"class":5565},[5555,12356,5779],{"class":5603},[5555,12358,12359],{"class":5557,"line":5782},[5555,12360,12361],{"class":5603},"    {\n",[5555,12363,12364],{"class":5557,"line":5815},[5555,12365,12366],{"class":5757},"        \u002F\u002F Крок 1: Фільтруємо парні (створює новий вектор!)\n",[5555,12368,12369,12371,12373,12375,12377,12379,12381,12383],{"class":5557,"line":5833},[5555,12370,6062],{"class":5616},[5555,12372,5620],{"class":5603},[5555,12374,5623],{"class":5616},[5555,12376,5626],{"class":5603},[5555,12378,5596],{"class":5595},[5555,12380,5631],{"class":5603},[5555,12382,5776],{"class":5634},[5555,12384,5779],{"class":5603},[5555,12386,12387,12389,12391,12393,12395,12397,12399,12401,12403,12405,12407,12409],{"class":5557,"line":5866},[5555,12388,6062],{"class":5616},[5555,12390,5620],{"class":5603},[5555,12392,5789],{"class":5599},[5555,12394,5792],{"class":5603},[5555,12396,5635],{"class":5634},[5555,12398,5428],{"class":5603},[5555,12400,5799],{"class":5599},[5555,12402,5802],{"class":5603},[5555,12404,5635],{"class":5634},[5555,12406,5428],{"class":5603},[5555,12408,5809],{"class":5599},[5555,12410,5963],{"class":5603},[5555,12412,12413,12416,12418,12420,12422,12424],{"class":5557,"line":5871},[5555,12414,12415],{"class":5616},"                     std",[5555,12417,5620],{"class":5603},[5555,12419,5823],{"class":5599},[5555,12421,5792],{"class":5603},[5555,12423,5776],{"class":5634},[5555,12425,5830],{"class":5603},[5555,12427,12428,12431,12433,12435,12437,12439,12441,12443,12445,12447,12449],{"class":5557,"line":5877},[5555,12429,12430],{"class":5603},"                     [](",[5555,12432,5596],{"class":5595},[5555,12434,5841],{"class":5634},[5555,12436,5844],{"class":5603},[5555,12438,5847],{"class":5561},[5555,12440,5841],{"class":5634},[5555,12442,5852],{"class":5603},[5555,12444,5648],{"class":5641},[5555,12446,5857],{"class":5603},[5555,12448,5860],{"class":5641},[5555,12450,5863],{"class":5603},[5555,12452,12453,12455,12457,12459,12461,12464,12466,12468,12470,12472,12475,12478,12480,12482],{"class":5557,"line":5900},[5555,12454,6062],{"class":5616},[5555,12456,5620],{"class":5603},[5555,12458,6067],{"class":5634},[5555,12460,6070],{"class":5603},[5555,12462,12463],{"class":5565},"\"After filter: \"",[5555,12465,6070],{"class":5603},[5555,12467,5776],{"class":5634},[5555,12469,5428],{"class":5603},[5555,12471,5889],{"class":5599},[5555,12473,12474],{"class":5603},"() \u003C\u003C ",[5555,12476,12477],{"class":5565},"\" elements",[5555,12479,6098],{"class":6097},[5555,12481,6094],{"class":5565},[5555,12483,5779],{"class":5603},[5555,12485,12486],{"class":5557,"line":5918},[5555,12487,12488],{"class":5603},"        \n",[5555,12490,12491],{"class":5557,"line":5923},[5555,12492,12493],{"class":5757},"        \u002F\u002F Крок 2: Беремо перші 10 (викидаємо 499'990 елементів!)\n",[5555,12495,12496,12498,12500,12502,12504,12506],{"class":5557,"line":5929},[5555,12497,5903],{"class":5634},[5555,12499,5428],{"class":5603},[5555,12501,5908],{"class":5599},[5555,12503,5792],{"class":5603},[5555,12505,5688],{"class":5641},[5555,12507,5915],{"class":5603},[5555,12509,12510,12512,12514,12516,12518,12521,12523,12525,12527,12529,12531,12533,12535,12537],{"class":5557,"line":5966},[5555,12511,6062],{"class":5616},[5555,12513,5620],{"class":5603},[5555,12515,6067],{"class":5634},[5555,12517,6070],{"class":5603},[5555,12519,12520],{"class":5565},"\"After take: \"",[5555,12522,6070],{"class":5603},[5555,12524,5776],{"class":5634},[5555,12526,5428],{"class":5603},[5555,12528,5889],{"class":5599},[5555,12530,12474],{"class":5603},[5555,12532,12477],{"class":5565},[5555,12534,6098],{"class":6097},[5555,12536,6094],{"class":5565},[5555,12538,5779],{"class":5603},[5555,12540,12541],{"class":5557,"line":5989},[5555,12542,12543],{"class":5603},"    }\n",[5555,12545,12546],{"class":5557,"line":5994},[5555,12547,5751],{"class":5603},[5555,12549,12550,12552,12554,12556,12558,12560,12562,12565,12567,12569],{"class":5557,"line":6000},[5555,12551,5617],{"class":5616},[5555,12553,5620],{"class":5603},[5555,12555,6067],{"class":5634},[5555,12557,6070],{"class":5603},[5555,12559,6094],{"class":5565},[5555,12561,6098],{"class":6097},[5555,12563,12564],{"class":5565},"=== LAZY (Ranges) ===",[5555,12566,6098],{"class":6097},[5555,12568,6094],{"class":5565},[5555,12570,5779],{"class":5603},[5555,12572,12573],{"class":5557,"line":6029},[5555,12574,12361],{"class":5603},[5555,12576,12577],{"class":5557,"line":6034},[5555,12578,12579],{"class":5757},"        \u002F\u002F Створюємо view (не обчислюється!)\n",[5555,12581,12582,12585,12587,12589],{"class":5557,"line":6040},[5555,12583,12584],{"class":5595},"        auto",[5555,12586,8202],{"class":5634},[5555,12588,6348],{"class":5603},[5555,12590,6351],{"class":5634},[5555,12592,12593,12596,12598,12600,12602,12604,12606,12608,12610,12612,12614,12616,12618,12620,12622,12624,12626],{"class":5557,"line":6059},[5555,12594,12595],{"class":5603},"            | ",[5555,12597,6359],{"class":5616},[5555,12599,5620],{"class":5603},[5555,12601,5434],{"class":5616},[5555,12603,5620],{"class":5603},[5555,12605,6368],{"class":5599},[5555,12607,6371],{"class":5603},[5555,12609,5596],{"class":5595},[5555,12611,5841],{"class":5634},[5555,12613,5844],{"class":5603},[5555,12615,5847],{"class":5561},[5555,12617,5841],{"class":5634},[5555,12619,5852],{"class":5603},[5555,12621,5648],{"class":5641},[5555,12623,5857],{"class":5603},[5555,12625,5860],{"class":5641},[5555,12627,6392],{"class":5603},[5555,12629,12630,12632,12634,12636,12638,12640,12642,12644,12646],{"class":5557,"line":6083},[5555,12631,12595],{"class":5603},[5555,12633,6359],{"class":5616},[5555,12635,5620],{"class":5603},[5555,12637,5434],{"class":5616},[5555,12639,5620],{"class":5603},[5555,12641,6407],{"class":5599},[5555,12643,5792],{"class":5603},[5555,12645,5688],{"class":5641},[5555,12647,5915],{"class":5603},[5555,12649,12650],{"class":5557,"line":6105},[5555,12651,12488],{"class":5603},[5555,12653,12654,12656,12658,12660,12662,12665,12667,12669],{"class":5557,"line":6110},[5555,12655,6062],{"class":5616},[5555,12657,5620],{"class":5603},[5555,12659,6067],{"class":5634},[5555,12661,6070],{"class":5603},[5555,12663,12664],{"class":5565},"\"View created (no computation yet)",[5555,12666,6098],{"class":6097},[5555,12668,6094],{"class":5565},[5555,12670,5779],{"class":5603},[5555,12672,12673],{"class":5557,"line":6121},[5555,12674,12488],{"class":5603},[5555,12676,12677],{"class":5557,"line":7404},[5555,12678,12679],{"class":5757},"        \u002F\u002F Обчислення відбувається ТУТ\n",[5555,12681,12682,12685,12688,12690,12692],{"class":5557,"line":7409},[5555,12683,12684],{"class":5595},"        int",[5555,12686,12687],{"class":5634}," count",[5555,12689,6348],{"class":5603},[5555,12691,5860],{"class":5641},[5555,12693,5779],{"class":5603},[5555,12695,12696,12698,12700,12702,12704,12706,12709],{"class":5557,"line":7414},[5555,12697,10963],{"class":5561},[5555,12699,5439],{"class":5603},[5555,12701,5596],{"class":5595},[5555,12703,5841],{"class":5634},[5555,12705,6052],{"class":5603},[5555,12707,12708],{"class":5634},"view",[5555,12710,5897],{"class":5603},[5555,12712,12713],{"class":5557,"line":7420},[5555,12714,12715],{"class":5603},"        {\n",[5555,12717,12718,12721,12724],{"class":5557,"line":7426},[5555,12719,12720],{"class":5603},"            ++",[5555,12722,12723],{"class":5634},"count",[5555,12725,5779],{"class":5603},[5555,12727,12728],{"class":5557,"line":7432},[5555,12729,12730],{"class":5757},"            \u002F\u002F Обробляється лише 10 елементів!\n",[5555,12732,12733],{"class":5557,"line":7437},[5555,12734,12735],{"class":5603},"        }\n",[5555,12737,12738,12740,12742,12744,12746,12749,12751,12753,12755,12757,12759,12761],{"class":5557,"line":7442},[5555,12739,6062],{"class":5616},[5555,12741,5620],{"class":5603},[5555,12743,6067],{"class":5634},[5555,12745,6070],{"class":5603},[5555,12747,12748],{"class":5565},"\"Iterated: \"",[5555,12750,6070],{"class":5603},[5555,12752,12723],{"class":5634},[5555,12754,6070],{"class":5603},[5555,12756,12477],{"class":5565},[5555,12758,6098],{"class":6097},[5555,12760,6094],{"class":5565},[5555,12762,5779],{"class":5603},[5555,12764,12765],{"class":5557,"line":7448},[5555,12766,12543],{"class":5603},[5555,12768,12769],{"class":5557,"line":7454},[5555,12770,5751],{"class":5603},[5555,12772,12773,12775,12777],{"class":5557,"line":7460},[5555,12774,6113],{"class":5561},[5555,12776,6116],{"class":5641},[5555,12778,5779],{"class":5603},[5555,12780,12781],{"class":5557,"line":7466},[5555,12782,6124],{"class":5603},[6587,12784,12786,12790,12794,12798,12801,12804,12808],{"title":12785},".\u002FEagerVsLazy",[6591,12787,12789],{"className":12788},[5557],"=== EAGER (STL) ===",[6591,12791,12793],{"className":12792},[5557],"After filter: 500000 elements  ← Обробили ВСІ 500K парних!",[6591,12795,12797],{"className":12796},[5557],"After take: 10 elements  ← Викинули 499'990 елементів",[6591,12799],{"className":12800},[5557],[6591,12802,12564],{"className":12803},[5557],[6591,12805,12807],{"className":12806},[5557],"View created (no computation yet)",[6591,12809,12811],{"className":12810},[5557],"Iterated: 10 elements  ← Обробили ЛИШЕ 10 елементів!",[5539,12813,12815],{"id":12814},"візуалізація-lazy-evaluation","Візуалізація lazy evaluation",[7238,12817,12819],{"title":12818},"Eager vs Lazy обчислення",[5544,12820,12822],{"className":7243,"code":12821,"language":7245,"meta":5551,"style":5551},"@startuml\nskinparam backgroundColor transparent\nskinparam defaultFontName \"JetBrains Mono\"\nskinparam defaultFontSize 12\n\ntitle Eager (STL) vs Lazy (Ranges)\n\npackage \"Eager Evaluation\" {\n    rectangle \"Input\\n1M елементів\" as E_IN #3B82F6\n    rectangle \"Filter\\n500K елементів\\n(новий вектор)\" as E_FILTER #F59E0B\n    rectangle \"Take 10\\n10 елементів\\n(resize)\" as E_TAKE #10B981\n    \n    E_IN -down-> E_FILTER : обробити\\nВСІ 1M\n    E_FILTER -down-> E_TAKE : викинути\\n499'990\n    \n    note right of E_FILTER\n      ❌ Виділення пам'яті\n      ❌ Копіювання 500K\n      ❌ Потім видалення\n    end note\n}\n\npackage \"Lazy Evaluation\" {\n    rectangle \"Input\\n1M елементів\" as L_IN #3B82F6\n    rectangle \"View\\n(без даних)\" as L_VIEW #8B5CF6\n    rectangle \"Iteration\\n10 елементів\" as L_ITER #10B981\n    \n    L_IN -down-> L_VIEW : створити\\nопис\n    L_VIEW -down-> L_ITER : обробити\\nлише 10\n    \n    note right of L_VIEW\n      ✅ Немає копіювання\n      ✅ Немає виділення\n      ✅ Обробка on-the-fly\n    end note\n}\n\n@enduml\n",[5425,12823,12824,12828,12832,12836,12840,12844,12849,12853,12858,12863,12868,12873,12877,12882,12887,12891,12896,12901,12906,12911,12916,12920,12924,12929,12934,12939,12944,12948,12953,12958,12962,12967,12972,12977,12982,12986,12990,12994],{"__ignoreMap":5551},[5555,12825,12826],{"class":5557,"line":5558},[5555,12827,7252],{},[5555,12829,12830],{"class":5557,"line":5569},[5555,12831,7257],{},[5555,12833,12834],{"class":5557,"line":5577},[5555,12835,7262],{},[5555,12837,12838],{"class":5557,"line":5585},[5555,12839,8244],{},[5555,12841,12842],{"class":5557,"line":5592},[5555,12843,5589],{"emptyLinePlaceholder":5588},[5555,12845,12846],{"class":5557,"line":5607},[5555,12847,12848],{},"title Eager (STL) vs Lazy (Ranges)\n",[5555,12850,12851],{"class":5557,"line":5613},[5555,12852,5589],{"emptyLinePlaceholder":5588},[5555,12854,12855],{"class":5557,"line":5694},[5555,12856,12857],{},"package \"Eager Evaluation\" {\n",[5555,12859,12860],{"class":5557,"line":5748},[5555,12861,12862],{},"    rectangle \"Input\\n1M елементів\" as E_IN #3B82F6\n",[5555,12864,12865],{"class":5557,"line":5754},[5555,12866,12867],{},"    rectangle \"Filter\\n500K елементів\\n(новий вектор)\" as E_FILTER #F59E0B\n",[5555,12869,12870],{"class":5557,"line":5761},[5555,12871,12872],{},"    rectangle \"Take 10\\n10 елементів\\n(resize)\" as E_TAKE #10B981\n",[5555,12874,12875],{"class":5557,"line":5782},[5555,12876,5751],{},[5555,12878,12879],{"class":5557,"line":5815},[5555,12880,12881],{},"    E_IN -down-> E_FILTER : обробити\\nВСІ 1M\n",[5555,12883,12884],{"class":5557,"line":5833},[5555,12885,12886],{},"    E_FILTER -down-> E_TAKE : викинути\\n499'990\n",[5555,12888,12889],{"class":5557,"line":5866},[5555,12890,5751],{},[5555,12892,12893],{"class":5557,"line":5871},[5555,12894,12895],{},"    note right of E_FILTER\n",[5555,12897,12898],{"class":5557,"line":5877},[5555,12899,12900],{},"      ❌ Виділення пам'яті\n",[5555,12902,12903],{"class":5557,"line":5900},[5555,12904,12905],{},"      ❌ Копіювання 500K\n",[5555,12907,12908],{"class":5557,"line":5918},[5555,12909,12910],{},"      ❌ Потім видалення\n",[5555,12912,12913],{"class":5557,"line":5923},[5555,12914,12915],{},"    end note\n",[5555,12917,12918],{"class":5557,"line":5929},[5555,12919,6124],{},[5555,12921,12922],{"class":5557,"line":5966},[5555,12923,5589],{"emptyLinePlaceholder":5588},[5555,12925,12926],{"class":5557,"line":5989},[5555,12927,12928],{},"package \"Lazy Evaluation\" {\n",[5555,12930,12931],{"class":5557,"line":5994},[5555,12932,12933],{},"    rectangle \"Input\\n1M елементів\" as L_IN #3B82F6\n",[5555,12935,12936],{"class":5557,"line":6000},[5555,12937,12938],{},"    rectangle \"View\\n(без даних)\" as L_VIEW #8B5CF6\n",[5555,12940,12941],{"class":5557,"line":6029},[5555,12942,12943],{},"    rectangle \"Iteration\\n10 елементів\" as L_ITER #10B981\n",[5555,12945,12946],{"class":5557,"line":6034},[5555,12947,5751],{},[5555,12949,12950],{"class":5557,"line":6040},[5555,12951,12952],{},"    L_IN -down-> L_VIEW : створити\\nопис\n",[5555,12954,12955],{"class":5557,"line":6059},[5555,12956,12957],{},"    L_VIEW -down-> L_ITER : обробити\\nлише 10\n",[5555,12959,12960],{"class":5557,"line":6083},[5555,12961,5751],{},[5555,12963,12964],{"class":5557,"line":6105},[5555,12965,12966],{},"    note right of L_VIEW\n",[5555,12968,12969],{"class":5557,"line":6110},[5555,12970,12971],{},"      ✅ Немає копіювання\n",[5555,12973,12974],{"class":5557,"line":6121},[5555,12975,12976],{},"      ✅ Немає виділення\n",[5555,12978,12979],{"class":5557,"line":7404},[5555,12980,12981],{},"      ✅ Обробка on-the-fly\n",[5555,12983,12984],{"class":5557,"line":7409},[5555,12985,12915],{},[5555,12987,12988],{"class":5557,"line":7414},[5555,12989,6124],{},[5555,12991,12992],{"class":5557,"line":7420},[5555,12993,5589],{"emptyLinePlaceholder":5588},[5555,12995,12996],{"class":5557,"line":7426},[5555,12997,7543],{},[7180,12999,13000,13005],{},[5532,13001,13002],{},[5413,13003,13004],{},"Переваги lazy evaluation:",[6131,13006,13007,13013,13019,13025],{},[5409,13008,13009,13012],{},[5413,13010,13011],{},"Менше пам'яті:"," не створюються проміжні контейнери",[5409,13014,13015,13018],{},[5413,13016,13017],{},"Швидше:"," обробляються лише потрібні елементи",[5409,13020,13021,13024],{},[5413,13022,13023],{},"Компози\nційність:"," операції комбінуються без зайвих проміжних кроків",[5409,13026,13027,13030],{},[5413,13028,13029],{},"Нескінченні діапазони:"," можливі завдяки відкладеному обчисленню",[5524,13032],{},[5527,13034,13036],{"id":13035},"range-based-алгоритми","Range-based алгоритми",[5532,13038,13039,13040,13043],{},"C++20 додає ",[5413,13041,13042],{},"версії STL алгоритмів",", що працюють з ranges замість пар ітераторів.",[5539,13045,13047],{"id":13046},"порівняння-класичні-vs-range-based","Порівняння: класичні vs range-based",[13049,13050,13051,13319],"code-group",{},[5544,13052,13055],{"className":5546,"code":13053,"filename":13054,"language":5549,"meta":5551,"style":5551},"#include \u003Calgorithm>\n#include \u003Cvector>\n\nstd::vector\u003Cint> vec = {3, 1, 4, 1, 5};\n\n\u002F\u002F Сортування\nstd::sort(vec.begin(), vec.end());\n\n\u002F\u002F Пошук\nauto it = std::find(vec.begin(), vec.end(), 4);\n\n\u002F\u002F Підрахунок\nint cnt = std::count_if(vec.begin(), vec.end(),\n                        [](int n) { return n > 2; });\n\n\u002F\u002F Трансформація\nstd::transform(vec.begin(), vec.end(), vec.begin(),\n               [](int n) { return n * 2; });\n","Класичний STL (C++17)",[5425,13056,13057,13063,13069,13073,13111,13115,13120,13146,13150,13155,13191,13195,13200,13234,13255,13259,13264,13298],{"__ignoreMap":5551},[5555,13058,13059,13061],{"class":5557,"line":5558},[5555,13060,5562],{"class":5561},[5555,13062,5582],{"class":5565},[5555,13064,13065,13067],{"class":5557,"line":5569},[5555,13066,5562],{"class":5561},[5555,13068,5574],{"class":5565},[5555,13070,13071],{"class":5557,"line":5577},[5555,13072,5589],{"emptyLinePlaceholder":5588},[5555,13074,13075,13077,13079,13081,13083,13085,13087,13089,13091,13093,13095,13097,13099,13101,13103,13105,13107,13109],{"class":5557,"line":5585},[5555,13076,6359],{"class":5616},[5555,13078,5620],{"class":5603},[5555,13080,5623],{"class":5634},[5555,13082,5626],{"class":5603},[5555,13084,5596],{"class":5595},[5555,13086,5631],{"class":5603},[5555,13088,6471],{"class":5634},[5555,13090,5638],{"class":5603},[5555,13092,5653],{"class":5641},[5555,13094,5645],{"class":5603},[5555,13096,5642],{"class":5641},[5555,13098,5645],{"class":5603},[5555,13100,5658],{"class":5641},[5555,13102,5645],{"class":5603},[5555,13104,5642],{"class":5641},[5555,13106,5645],{"class":5603},[5555,13108,5663],{"class":5641},[5555,13110,5745],{"class":5603},[5555,13112,13113],{"class":5557,"line":5592},[5555,13114,5589],{"emptyLinePlaceholder":5588},[5555,13116,13117],{"class":5557,"line":5607},[5555,13118,13119],{"class":5757},"\u002F\u002F Сортування\n",[5555,13121,13122,13124,13126,13128,13130,13132,13134,13136,13138,13140,13142,13144],{"class":5557,"line":5613},[5555,13123,6359],{"class":5616},[5555,13125,5620],{"class":5603},[5555,13127,6007],{"class":5599},[5555,13129,5792],{"class":5603},[5555,13131,6471],{"class":5634},[5555,13133,5428],{"class":5603},[5555,13135,5799],{"class":5599},[5555,13137,5802],{"class":5603},[5555,13139,6471],{"class":5634},[5555,13141,5428],{"class":5603},[5555,13143,5809],{"class":5599},[5555,13145,6026],{"class":5603},[5555,13147,13148],{"class":5557,"line":5694},[5555,13149,5589],{"emptyLinePlaceholder":5588},[5555,13151,13152],{"class":5557,"line":5748},[5555,13153,13154],{"class":5757},"\u002F\u002F Пошук\n",[5555,13156,13157,13159,13161,13163,13165,13167,13169,13171,13173,13175,13177,13179,13181,13183,13185,13187,13189],{"class":5557,"line":5754},[5555,13158,8105],{"class":5595},[5555,13160,6852],{"class":5634},[5555,13162,6348],{"class":5603},[5555,13164,6359],{"class":5616},[5555,13166,5620],{"class":5603},[5555,13168,6861],{"class":5599},[5555,13170,5792],{"class":5603},[5555,13172,6471],{"class":5634},[5555,13174,5428],{"class":5603},[5555,13176,5799],{"class":5599},[5555,13178,5802],{"class":5603},[5555,13180,6471],{"class":5634},[5555,13182,5428],{"class":5603},[5555,13184,5809],{"class":5599},[5555,13186,5802],{"class":5603},[5555,13188,5658],{"class":5641},[5555,13190,5915],{"class":5603},[5555,13192,13193],{"class":5557,"line":5761},[5555,13194,5589],{"emptyLinePlaceholder":5588},[5555,13196,13197],{"class":5557,"line":5782},[5555,13198,13199],{"class":5757},"\u002F\u002F Підрахунок\n",[5555,13201,13202,13204,13207,13209,13211,13213,13216,13218,13220,13222,13224,13226,13228,13230,13232],{"class":5557,"line":5815},[5555,13203,5596],{"class":5595},[5555,13205,13206],{"class":5634}," cnt",[5555,13208,6348],{"class":5603},[5555,13210,6359],{"class":5616},[5555,13212,5620],{"class":5603},[5555,13214,13215],{"class":5599},"count_if",[5555,13217,5792],{"class":5603},[5555,13219,6471],{"class":5634},[5555,13221,5428],{"class":5603},[5555,13223,5799],{"class":5599},[5555,13225,5802],{"class":5603},[5555,13227,6471],{"class":5634},[5555,13229,5428],{"class":5603},[5555,13231,5809],{"class":5599},[5555,13233,5963],{"class":5603},[5555,13235,13236,13239,13241,13243,13245,13247,13249,13251,13253],{"class":5557,"line":5833},[5555,13237,13238],{"class":5603},"                        [](",[5555,13240,5596],{"class":5595},[5555,13242,5841],{"class":5634},[5555,13244,5844],{"class":5603},[5555,13246,5847],{"class":5561},[5555,13248,5841],{"class":5634},[5555,13250,8179],{"class":5603},[5555,13252,5648],{"class":5641},[5555,13254,5863],{"class":5603},[5555,13256,13257],{"class":5557,"line":5866},[5555,13258,5589],{"emptyLinePlaceholder":5588},[5555,13260,13261],{"class":5557,"line":5871},[5555,13262,13263],{"class":5757},"\u002F\u002F Трансформація\n",[5555,13265,13266,13268,13270,13272,13274,13276,13278,13280,13282,13284,13286,13288,13290,13292,13294,13296],{"class":5557,"line":5877},[5555,13267,6359],{"class":5616},[5555,13269,5620],{"class":5603},[5555,13271,5936],{"class":5599},[5555,13273,5792],{"class":5603},[5555,13275,6471],{"class":5634},[5555,13277,5428],{"class":5603},[5555,13279,5799],{"class":5599},[5555,13281,5802],{"class":5603},[5555,13283,6471],{"class":5634},[5555,13285,5428],{"class":5603},[5555,13287,5809],{"class":5599},[5555,13289,5802],{"class":5603},[5555,13291,6471],{"class":5634},[5555,13293,5428],{"class":5603},[5555,13295,5799],{"class":5599},[5555,13297,5963],{"class":5603},[5555,13299,13300,13303,13305,13307,13309,13311,13313,13315,13317],{"class":5557,"line":5900},[5555,13301,13302],{"class":5603},"               [](",[5555,13304,5596],{"class":5595},[5555,13306,5841],{"class":5634},[5555,13308,5844],{"class":5603},[5555,13310,5847],{"class":5561},[5555,13312,5841],{"class":5634},[5555,13314,5982],{"class":5603},[5555,13316,5648],{"class":5641},[5555,13318,5863],{"class":5603},[5544,13320,13323],{"className":5546,"code":13321,"filename":13322,"language":5549,"meta":5551,"style":5551},"#include \u003Calgorithm>\n#include \u003Cranges>\n#include \u003Cvector>\n\nstd::vector\u003Cint> vec = {3, 1, 4, 1, 5};\n\n\u002F\u002F Сортування\nstd::ranges::sort(vec);\n\n\u002F\u002F Пошук\nauto it = std::ranges::find(vec, 4);\n\n\u002F\u002F Підрахунок\nint cnt = std::ranges::count_if(vec,\n                                 [](int n) { return n > 2; });\n\n\u002F\u002F Трансформація\nstd::ranges::transform(vec, vec.begin(),\n                       [](int n) { return n * 2; });\n","Range-based (C++20)",[5425,13324,13325,13331,13337,13343,13347,13385,13389,13393,13411,13415,13419,13447,13451,13455,13480,13501,13505,13509,13535],{"__ignoreMap":5551},[5555,13326,13327,13329],{"class":5557,"line":5558},[5555,13328,5562],{"class":5561},[5555,13330,5582],{"class":5565},[5555,13332,13333,13335],{"class":5557,"line":5569},[5555,13334,5562],{"class":5561},[5555,13336,6206],{"class":5565},[5555,13338,13339,13341],{"class":5557,"line":5577},[5555,13340,5562],{"class":5561},[5555,13342,5574],{"class":5565},[5555,13344,13345],{"class":5557,"line":5585},[5555,13346,5589],{"emptyLinePlaceholder":5588},[5555,13348,13349,13351,13353,13355,13357,13359,13361,13363,13365,13367,13369,13371,13373,13375,13377,13379,13381,13383],{"class":5557,"line":5592},[5555,13350,6359],{"class":5616},[5555,13352,5620],{"class":5603},[5555,13354,5623],{"class":5634},[5555,13356,5626],{"class":5603},[5555,13358,5596],{"class":5595},[5555,13360,5631],{"class":5603},[5555,13362,6471],{"class":5634},[5555,13364,5638],{"class":5603},[5555,13366,5653],{"class":5641},[5555,13368,5645],{"class":5603},[5555,13370,5642],{"class":5641},[5555,13372,5645],{"class":5603},[5555,13374,5658],{"class":5641},[5555,13376,5645],{"class":5603},[5555,13378,5642],{"class":5641},[5555,13380,5645],{"class":5603},[5555,13382,5663],{"class":5641},[5555,13384,5745],{"class":5603},[5555,13386,13387],{"class":5557,"line":5607},[5555,13388,5589],{"emptyLinePlaceholder":5588},[5555,13390,13391],{"class":5557,"line":5613},[5555,13392,13119],{"class":5757},[5555,13394,13395,13397,13399,13401,13403,13405,13407,13409],{"class":5557,"line":5694},[5555,13396,6359],{"class":5616},[5555,13398,5620],{"class":5603},[5555,13400,6499],{"class":5616},[5555,13402,5620],{"class":5603},[5555,13404,6007],{"class":5599},[5555,13406,5792],{"class":5603},[5555,13408,6471],{"class":5634},[5555,13410,5915],{"class":5603},[5555,13412,13413],{"class":5557,"line":5748},[5555,13414,5589],{"emptyLinePlaceholder":5588},[5555,13416,13417],{"class":5557,"line":5754},[5555,13418,13154],{"class":5757},[5555,13420,13421,13423,13425,13427,13429,13431,13433,13435,13437,13439,13441,13443,13445],{"class":5557,"line":5761},[5555,13422,8105],{"class":5595},[5555,13424,6852],{"class":5634},[5555,13426,6348],{"class":5603},[5555,13428,6359],{"class":5616},[5555,13430,5620],{"class":5603},[5555,13432,6499],{"class":5616},[5555,13434,5620],{"class":5603},[5555,13436,6861],{"class":5599},[5555,13438,5792],{"class":5603},[5555,13440,6471],{"class":5634},[5555,13442,5645],{"class":5603},[5555,13444,5658],{"class":5641},[5555,13446,5915],{"class":5603},[5555,13448,13449],{"class":5557,"line":5782},[5555,13450,5589],{"emptyLinePlaceholder":5588},[5555,13452,13453],{"class":5557,"line":5815},[5555,13454,13199],{"class":5757},[5555,13456,13457,13459,13461,13463,13465,13467,13469,13471,13473,13475,13477],{"class":5557,"line":5833},[5555,13458,5596],{"class":5595},[5555,13460,13206],{"class":5634},[5555,13462,6348],{"class":5603},[5555,13464,6359],{"class":5616},[5555,13466,5620],{"class":5603},[5555,13468,6499],{"class":5616},[5555,13470,5620],{"class":5603},[5555,13472,13215],{"class":5599},[5555,13474,5792],{"class":5603},[5555,13476,6471],{"class":5634},[5555,13478,13479],{"class":5603},",\n",[5555,13481,13482,13485,13487,13489,13491,13493,13495,13497,13499],{"class":5557,"line":5866},[5555,13483,13484],{"class":5603},"                                 [](",[5555,13486,5596],{"class":5595},[5555,13488,5841],{"class":5634},[5555,13490,5844],{"class":5603},[5555,13492,5847],{"class":5561},[5555,13494,5841],{"class":5634},[5555,13496,8179],{"class":5603},[5555,13498,5648],{"class":5641},[5555,13500,5863],{"class":5603},[5555,13502,13503],{"class":5557,"line":5871},[5555,13504,5589],{"emptyLinePlaceholder":5588},[5555,13506,13507],{"class":5557,"line":5877},[5555,13508,13263],{"class":5757},[5555,13510,13511,13513,13515,13517,13519,13521,13523,13525,13527,13529,13531,13533],{"class":5557,"line":5900},[5555,13512,6359],{"class":5616},[5555,13514,5620],{"class":5603},[5555,13516,6499],{"class":5616},[5555,13518,5620],{"class":5603},[5555,13520,5936],{"class":5599},[5555,13522,5792],{"class":5603},[5555,13524,6471],{"class":5634},[5555,13526,5645],{"class":5603},[5555,13528,6471],{"class":5634},[5555,13530,5428],{"class":5603},[5555,13532,5799],{"class":5599},[5555,13534,5963],{"class":5603},[5555,13536,13537,13540,13542,13544,13546,13548,13550,13552,13554],{"class":5557,"line":5918},[5555,13538,13539],{"class":5603},"                       [](",[5555,13541,5596],{"class":5595},[5555,13543,5841],{"class":5634},[5555,13545,5844],{"class":5603},[5555,13547,5847],{"class":5561},[5555,13549,5841],{"class":5634},[5555,13551,5982],{"class":5603},[5555,13553,5648],{"class":5641},[5555,13555,5863],{"class":5603},[5539,13557,13559],{"id":13558},"проєкції-трансформація-перед-порівнянням","Проєкції: трансформація перед порівнянням",[5532,13561,13562,13563,13566],{},"Range-based алгоритми підтримують ",[5413,13564,13565],{},"проєкції"," — функції, що застосовуються до елементів перед операцією:",[5544,13568,13571],{"className":5546,"code":13569,"filename":13570,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Calgorithm>\n#include \u003Cranges>\n\nstruct Person\n{\n    std::string name;\n    int age;\n};\n\nint main()\n{\n    std::vector\u003CPerson> people = {\n        {\"Alice\", 30},\n        {\"Bob\", 25},\n        {\"Charlie\", 35}\n    };\n    \n    \u002F\u002F Сортування за віком (проєкція)\n    std::ranges::sort(people, {},  \u002F\u002F {} = std::less{}\n                      &Person::age);\n    \n    std::cout \u003C\u003C \"Sorted by age:\\n\";\n    for (const auto& p : people)\n        std::cout \u003C\u003C \"  \" \u003C\u003C p.name \u003C\u003C \" (\" \u003C\u003C p.age \u003C\u003C \")\\n\";\n    \n    \u002F\u002F Пошук за ім'ям\n    auto it = std::ranges::find(people, \"Bob\", &Person::name);\n    \n    if (it != people.end())\n        std::cout \u003C\u003C \"\\nFound: \" \u003C\u003C it->name \u003C\u003C \", age \" \u003C\u003C it->age \u003C\u003C \"\\n\";\n    \n    return 0;\n}\n","Projections.cpp",[5425,13572,13573,13579,13585,13591,13597,13601,13609,13613,13625,13634,13638,13642,13650,13654,13674,13687,13700,13713,13717,13721,13726,13748,13762,13766,13785,13804,13849,13853,13858,13895,13899,13920,13968,13972,13980],{"__ignoreMap":5551},[5555,13574,13575,13577],{"class":5557,"line":5558},[5555,13576,5562],{"class":5561},[5555,13578,5566],{"class":5565},[5555,13580,13581,13583],{"class":5557,"line":5569},[5555,13582,5562],{"class":5561},[5555,13584,5574],{"class":5565},[5555,13586,13587,13589],{"class":5557,"line":5577},[5555,13588,5562],{"class":5561},[5555,13590,5582],{"class":5565},[5555,13592,13593,13595],{"class":5557,"line":5585},[5555,13594,5562],{"class":5561},[5555,13596,6206],{"class":5565},[5555,13598,13599],{"class":5557,"line":5592},[5555,13600,5589],{"emptyLinePlaceholder":5588},[5555,13602,13603,13606],{"class":5557,"line":5607},[5555,13604,13605],{"class":5595},"struct",[5555,13607,13608],{"class":5616}," Person\n",[5555,13610,13611],{"class":5557,"line":5613},[5555,13612,5610],{"class":5603},[5555,13614,13615,13617,13619,13621,13623],{"class":5557,"line":5694},[5555,13616,5617],{"class":5616},[5555,13618,5620],{"class":5603},[5555,13620,10496],{"class":5616},[5555,13622,10659],{"class":5634},[5555,13624,5779],{"class":5603},[5555,13626,13627,13629,13632],{"class":5557,"line":5748},[5555,13628,6892],{"class":5595},[5555,13630,13631],{"class":5634}," age",[5555,13633,5779],{"class":5603},[5555,13635,13636],{"class":5557,"line":5754},[5555,13637,5745],{"class":5603},[5555,13639,13640],{"class":5557,"line":5761},[5555,13641,5589],{"emptyLinePlaceholder":5588},[5555,13643,13644,13646,13648],{"class":5557,"line":5782},[5555,13645,5596],{"class":5595},[5555,13647,5600],{"class":5599},[5555,13649,5604],{"class":5603},[5555,13651,13652],{"class":5557,"line":5815},[5555,13653,5610],{"class":5603},[5555,13655,13656,13658,13660,13662,13664,13667,13669,13672],{"class":5557,"line":5833},[5555,13657,5617],{"class":5616},[5555,13659,5620],{"class":5603},[5555,13661,5623],{"class":5616},[5555,13663,5626],{"class":5603},[5555,13665,13666],{"class":5616},"Person",[5555,13668,5631],{"class":5603},[5555,13670,13671],{"class":5634},"people",[5555,13673,10508],{"class":5603},[5555,13675,13676,13678,13680,13682,13685],{"class":5557,"line":5866},[5555,13677,10513],{"class":5603},[5555,13679,10516],{"class":5565},[5555,13681,5645],{"class":5603},[5555,13683,13684],{"class":5641},"30",[5555,13686,10524],{"class":5603},[5555,13688,13689,13691,13693,13695,13698],{"class":5557,"line":5871},[5555,13690,10513],{"class":5603},[5555,13692,10531],{"class":5565},[5555,13694,5645],{"class":5603},[5555,13696,13697],{"class":5641},"25",[5555,13699,10524],{"class":5603},[5555,13701,13702,13704,13706,13708,13711],{"class":5557,"line":5877},[5555,13703,10513],{"class":5603},[5555,13705,10545],{"class":5565},[5555,13707,5645],{"class":5603},[5555,13709,13710],{"class":5641},"35",[5555,13712,6124],{"class":5603},[5555,13714,13715],{"class":5557,"line":5900},[5555,13716,10557],{"class":5603},[5555,13718,13719],{"class":5557,"line":5918},[5555,13720,5751],{"class":5603},[5555,13722,13723],{"class":5557,"line":5923},[5555,13724,13725],{"class":5757},"    \u002F\u002F Сортування за віком (проєкція)\n",[5555,13727,13728,13730,13732,13734,13736,13738,13740,13742,13745],{"class":5557,"line":5929},[5555,13729,5617],{"class":5616},[5555,13731,5620],{"class":5603},[5555,13733,6499],{"class":5616},[5555,13735,5620],{"class":5603},[5555,13737,6007],{"class":5599},[5555,13739,5792],{"class":5603},[5555,13741,13671],{"class":5634},[5555,13743,13744],{"class":5603},", {},",[5555,13746,13747],{"class":5757},"  \u002F\u002F {} = std::less{}\n",[5555,13749,13750,13753,13755,13757,13760],{"class":5557,"line":5966},[5555,13751,13752],{"class":5603},"                      &",[5555,13754,13666],{"class":5616},[5555,13756,5620],{"class":5603},[5555,13758,13759],{"class":5634},"age",[5555,13761,5915],{"class":5603},[5555,13763,13764],{"class":5557,"line":5989},[5555,13765,5751],{"class":5603},[5555,13767,13768,13770,13772,13774,13776,13779,13781,13783],{"class":5557,"line":5994},[5555,13769,5617],{"class":5616},[5555,13771,5620],{"class":5603},[5555,13773,6067],{"class":5634},[5555,13775,6070],{"class":5603},[5555,13777,13778],{"class":5565},"\"Sorted by age:",[5555,13780,6098],{"class":6097},[5555,13782,6094],{"class":5565},[5555,13784,5779],{"class":5603},[5555,13786,13787,13789,13791,13793,13795,13798,13800,13802],{"class":5557,"line":6000},[5555,13788,6043],{"class":5561},[5555,13790,5439],{"class":5603},[5555,13792,9664],{"class":5595},[5555,13794,9667],{"class":5595},[5555,13796,13797],{"class":5634}," p",[5555,13799,6052],{"class":5603},[5555,13801,13671],{"class":5634},[5555,13803,5897],{"class":5603},[5555,13805,13806,13808,13810,13812,13814,13817,13819,13821,13823,13825,13827,13830,13832,13834,13836,13838,13840,13843,13845,13847],{"class":5557,"line":6029},[5555,13807,6062],{"class":5616},[5555,13809,5620],{"class":5603},[5555,13811,6067],{"class":5634},[5555,13813,6070],{"class":5603},[5555,13815,13816],{"class":5565},"\"  \"",[5555,13818,6070],{"class":5603},[5555,13820,5532],{"class":5634},[5555,13822,5428],{"class":5603},[5555,13824,10677],{"class":5634},[5555,13826,6070],{"class":5603},[5555,13828,13829],{"class":5565},"\" (\"",[5555,13831,6070],{"class":5603},[5555,13833,5532],{"class":5634},[5555,13835,5428],{"class":5603},[5555,13837,13759],{"class":5634},[5555,13839,6070],{"class":5603},[5555,13841,13842],{"class":5565},"\")",[5555,13844,6098],{"class":6097},[5555,13846,6094],{"class":5565},[5555,13848,5779],{"class":5603},[5555,13850,13851],{"class":5557,"line":6034},[5555,13852,5751],{"class":5603},[5555,13854,13855],{"class":5557,"line":6040},[5555,13856,13857],{"class":5757},"    \u002F\u002F Пошук за ім'ям\n",[5555,13859,13860,13862,13864,13866,13868,13870,13872,13874,13876,13878,13880,13882,13884,13887,13889,13891,13893],{"class":5557,"line":6059},[5555,13861,6342],{"class":5595},[5555,13863,6852],{"class":5634},[5555,13865,6348],{"class":5603},[5555,13867,6359],{"class":5616},[5555,13869,5620],{"class":5603},[5555,13871,6499],{"class":5616},[5555,13873,5620],{"class":5603},[5555,13875,6861],{"class":5599},[5555,13877,5792],{"class":5603},[5555,13879,13671],{"class":5634},[5555,13881,5645],{"class":5603},[5555,13883,10531],{"class":5565},[5555,13885,13886],{"class":5603},", &",[5555,13888,13666],{"class":5616},[5555,13890,5620],{"class":5603},[5555,13892,10677],{"class":5634},[5555,13894,5915],{"class":5603},[5555,13896,13897],{"class":5557,"line":6083},[5555,13898,5751],{"class":5603},[5555,13900,13901,13903,13905,13908,13911,13913,13915,13917],{"class":5557,"line":6105},[5555,13902,5880],{"class":5561},[5555,13904,5439],{"class":5603},[5555,13906,13907],{"class":5634},"it",[5555,13909,13910],{"class":5603}," != ",[5555,13912,13671],{"class":5634},[5555,13914,5428],{"class":5603},[5555,13916,5809],{"class":5599},[5555,13918,13919],{"class":5603},"())\n",[5555,13921,13922,13924,13926,13928,13930,13932,13934,13937,13939,13941,13943,13945,13947,13950,13952,13954,13956,13958,13960,13962,13964,13966],{"class":5557,"line":6110},[5555,13923,6062],{"class":5616},[5555,13925,5620],{"class":5603},[5555,13927,6067],{"class":5634},[5555,13929,6070],{"class":5603},[5555,13931,6094],{"class":5565},[5555,13933,6098],{"class":6097},[5555,13935,13936],{"class":5565},"Found: \"",[5555,13938,6070],{"class":5603},[5555,13940,13907],{"class":5634},[5555,13942,12078],{"class":5603},[5555,13944,10677],{"class":5634},[5555,13946,6070],{"class":5603},[5555,13948,13949],{"class":5565},"\", age \"",[5555,13951,6070],{"class":5603},[5555,13953,13907],{"class":5634},[5555,13955,12078],{"class":5603},[5555,13957,13759],{"class":5634},[5555,13959,6070],{"class":5603},[5555,13961,6094],{"class":5565},[5555,13963,6098],{"class":6097},[5555,13965,6094],{"class":5565},[5555,13967,5779],{"class":5603},[5555,13969,13970],{"class":5557,"line":6121},[5555,13971,5751],{"class":5603},[5555,13973,13974,13976,13978],{"class":5557,"line":7404},[5555,13975,6113],{"class":5561},[5555,13977,6116],{"class":5641},[5555,13979,5779],{"class":5603},[5555,13981,13982],{"class":5557,"line":7409},[5555,13983,6124],{"class":5603},[6587,13985,13987,13991,13995,13999,14003,14006],{"title":13986},".\u002FProjections",[6591,13988,13990],{"className":13989},[5557],"Sorted by age:",[6591,13992,13994],{"className":13993},[5557],"  Bob (25)",[6591,13996,13998],{"className":13997},[5557],"  Alice (30)",[6591,14000,14002],{"className":14001},[5557],"  Charlie (35)",[6591,14004],{"className":14005},[5557],[6591,14007,14009],{"className":14008},[5557],"Found: Bob, age 25",[7180,14011,14012,14018,14066,14069],{},[5532,14013,14014,14017],{},[5413,14015,14016],{},"Проєкція"," — це третій параметр range-based алгоритмів:",[5544,14019,14021],{"className":5546,"code":14020,"language":5549,"meta":5551,"style":5551},"std::ranges::sort(range, comparator, projection);\n                  ↑      ↑            ↑\n                  що     як           через що\n                         порівнювати  порівнювати\n",[5425,14022,14023,14051,14056,14061],{"__ignoreMap":5551},[5555,14024,14025,14027,14029,14031,14033,14035,14037,14039,14041,14044,14046,14049],{"class":5557,"line":5558},[5555,14026,6359],{"class":5616},[5555,14028,5620],{"class":5603},[5555,14030,6499],{"class":5616},[5555,14032,5620],{"class":5603},[5555,14034,6007],{"class":5599},[5555,14036,5792],{"class":5603},[5555,14038,10974],{"class":5634},[5555,14040,5645],{"class":5603},[5555,14042,14043],{"class":5634},"comparator",[5555,14045,5645],{"class":5603},[5555,14047,14048],{"class":5634},"projection",[5555,14050,5915],{"class":5603},[5555,14052,14053],{"class":5557,"line":5569},[5555,14054,14055],{"class":5603},"                  ↑      ↑            ↑\n",[5555,14057,14058],{"class":5557,"line":5577},[5555,14059,14060],{"class":5603},"                  що     як           через що\n",[5555,14062,14063],{"class":5557,"line":5585},[5555,14064,14065],{"class":5603},"                         порівнювати  порівнювати\n",[5532,14067,14068],{},"Типові проєкції:",[5406,14070,14071,14077,14083],{},[5409,14072,14073,14074],{},"Член класу: ",[5425,14075,14076],{},"&Person::age",[5409,14078,14079,14080],{},"Лямбда: ",[5425,14081,14082],{},"[](const auto& p) { return p.age; }",[5409,14084,14085,14086],{},"Identity (за замовчуванням): ",[5425,14087,14088],{},"std::identity{}",[5524,14090],{},[5527,14092,14094],{"id":14093},"практичні-приклади","Практичні приклади",[14096,14097,14098,14499,15174,15448],"accordion",{},[14099,14100,14102,14487,14492],"accordion-item",{"title":14101},"Приклад 1: Обробка тексту — підрахунок слів",[5544,14103,14105],{"className":5546,"code":14104,"language":5549,"meta":5551,"style":5551},"#include \u003Ciostream>\n#include \u003Cstring>\n#include \u003Cranges>\n#include \u003Calgorithm>\n\nint main()\n{\n    std::string text = \"Hello world this is a test hello world\";\n    \n    \u002F\u002F Розбиваємо на слова\n    auto words = text | std::views::split(' ');\n    \n    \u002F\u002F Конвертуємо кожне слово в string\n    auto wordStrings = words | std::views::transform([](auto word) {\n        return std::string(word.begin(), word.end());\n    });\n    \n    \u002F\u002F Підраховуємо унікальні слова\n    std::vector\u003Cstd::string> uniqueWords;\n    for (const auto& word : wordStrings)\n    {\n        if (std::ranges::find(uniqueWords, word) == uniqueWords.end())\n            uniqueWords.push_back(word);\n    }\n    \n    std::cout \u003C\u003C \"Unique words: \" \u003C\u003C uniqueWords.size() \u003C\u003C \"\\n\";\n    for (const auto& word : uniqueWords)\n        std::cout \u003C\u003C \"  - \" \u003C\u003C word \u003C\u003C \"\\n\";\n    \n    return 0;\n}\n",[5425,14106,14107,14113,14119,14125,14131,14135,14143,14147,14165,14169,14174,14206,14210,14215,14248,14277,14281,14285,14290,14313,14332,14336,14372,14387,14391,14395,14426,14444,14471,14475,14483],{"__ignoreMap":5551},[5555,14108,14109,14111],{"class":5557,"line":5558},[5555,14110,5562],{"class":5561},[5555,14112,5566],{"class":5565},[5555,14114,14115,14117],{"class":5557,"line":5569},[5555,14116,5562],{"class":5561},[5555,14118,9411],{"class":5565},[5555,14120,14121,14123],{"class":5557,"line":5577},[5555,14122,5562],{"class":5561},[5555,14124,6206],{"class":5565},[5555,14126,14127,14129],{"class":5557,"line":5585},[5555,14128,5562],{"class":5561},[5555,14130,5582],{"class":5565},[5555,14132,14133],{"class":5557,"line":5592},[5555,14134,5589],{"emptyLinePlaceholder":5588},[5555,14136,14137,14139,14141],{"class":5557,"line":5607},[5555,14138,5596],{"class":5595},[5555,14140,5600],{"class":5599},[5555,14142,5604],{"class":5603},[5555,14144,14145],{"class":5557,"line":5613},[5555,14146,5610],{"class":5603},[5555,14148,14149,14151,14153,14155,14158,14160,14163],{"class":5557,"line":5694},[5555,14150,5617],{"class":5616},[5555,14152,5620],{"class":5603},[5555,14154,10496],{"class":5616},[5555,14156,14157],{"class":5634}," text",[5555,14159,6348],{"class":5603},[5555,14161,14162],{"class":5565},"\"Hello world this is a test hello world\"",[5555,14164,5779],{"class":5603},[5555,14166,14167],{"class":5557,"line":5748},[5555,14168,5751],{"class":5603},[5555,14170,14171],{"class":5557,"line":5754},[5555,14172,14173],{"class":5757},"    \u002F\u002F Розбиваємо на слова\n",[5555,14175,14176,14178,14181,14183,14186,14188,14190,14192,14194,14196,14199,14201,14204],{"class":5557,"line":5761},[5555,14177,6342],{"class":5595},[5555,14179,14180],{"class":5634}," words",[5555,14182,6348],{"class":5603},[5555,14184,14185],{"class":5634},"text",[5555,14187,7853],{"class":5603},[5555,14189,6359],{"class":5616},[5555,14191,5620],{"class":5603},[5555,14193,5434],{"class":5616},[5555,14195,5620],{"class":5603},[5555,14197,14198],{"class":5599},"split",[5555,14200,5792],{"class":5603},[5555,14202,14203],{"class":5565},"' '",[5555,14205,5915],{"class":5603},[5555,14207,14208],{"class":5557,"line":5782},[5555,14209,5751],{"class":5603},[5555,14211,14212],{"class":5557,"line":5815},[5555,14213,14214],{"class":5757},"    \u002F\u002F Конвертуємо кожне слово в string\n",[5555,14216,14217,14219,14222,14224,14227,14229,14231,14233,14235,14237,14239,14241,14243,14246],{"class":5557,"line":5833},[5555,14218,6342],{"class":5595},[5555,14220,14221],{"class":5634}," wordStrings",[5555,14223,6348],{"class":5603},[5555,14225,14226],{"class":5634},"words",[5555,14228,7853],{"class":5603},[5555,14230,6359],{"class":5616},[5555,14232,5620],{"class":5603},[5555,14234,5434],{"class":5616},[5555,14236,5620],{"class":5603},[5555,14238,5936],{"class":5599},[5555,14240,6371],{"class":5603},[5555,14242,8105],{"class":5595},[5555,14244,14245],{"class":5634}," word",[5555,14247,9556],{"class":5603},[5555,14249,14250,14252,14254,14256,14258,14260,14263,14265,14267,14269,14271,14273,14275],{"class":5557,"line":5866},[5555,14251,9561],{"class":5561},[5555,14253,9564],{"class":5616},[5555,14255,5620],{"class":5603},[5555,14257,10496],{"class":5599},[5555,14259,5792],{"class":5603},[5555,14261,14262],{"class":5634},"word",[5555,14264,5428],{"class":5603},[5555,14266,5799],{"class":5599},[5555,14268,5802],{"class":5603},[5555,14270,14262],{"class":5634},[5555,14272,5428],{"class":5603},[5555,14274,5809],{"class":5599},[5555,14276,6026],{"class":5603},[5555,14278,14279],{"class":5557,"line":5871},[5555,14280,9580],{"class":5603},[5555,14282,14283],{"class":5557,"line":5877},[5555,14284,5751],{"class":5603},[5555,14286,14287],{"class":5557,"line":5900},[5555,14288,14289],{"class":5757},"    \u002F\u002F Підраховуємо унікальні слова\n",[5555,14291,14292,14294,14296,14298,14300,14302,14304,14306,14308,14311],{"class":5557,"line":5918},[5555,14293,5617],{"class":5616},[5555,14295,5620],{"class":5603},[5555,14297,5623],{"class":5616},[5555,14299,5626],{"class":5603},[5555,14301,6359],{"class":5616},[5555,14303,5620],{"class":5603},[5555,14305,10496],{"class":5616},[5555,14307,5631],{"class":5603},[5555,14309,14310],{"class":5634},"uniqueWords",[5555,14312,5779],{"class":5603},[5555,14314,14315,14317,14319,14321,14323,14325,14327,14330],{"class":5557,"line":5923},[5555,14316,6043],{"class":5561},[5555,14318,5439],{"class":5603},[5555,14320,9664],{"class":5595},[5555,14322,9667],{"class":5595},[5555,14324,14245],{"class":5634},[5555,14326,6052],{"class":5603},[5555,14328,14329],{"class":5634},"wordStrings",[5555,14331,5897],{"class":5603},[5555,14333,14334],{"class":5557,"line":5929},[5555,14335,12361],{"class":5603},[5555,14337,14338,14341,14343,14345,14347,14349,14351,14353,14355,14357,14359,14361,14364,14366,14368,14370],{"class":5557,"line":5966},[5555,14339,14340],{"class":5561},"        if",[5555,14342,5439],{"class":5603},[5555,14344,6359],{"class":5616},[5555,14346,5620],{"class":5603},[5555,14348,6499],{"class":5616},[5555,14350,5620],{"class":5603},[5555,14352,6861],{"class":5599},[5555,14354,5792],{"class":5603},[5555,14356,14310],{"class":5634},[5555,14358,5645],{"class":5603},[5555,14360,14262],{"class":5634},[5555,14362,14363],{"class":5603},") == ",[5555,14365,14310],{"class":5634},[5555,14367,5428],{"class":5603},[5555,14369,5809],{"class":5599},[5555,14371,13919],{"class":5603},[5555,14373,14374,14377,14379,14381,14383,14385],{"class":5557,"line":5989},[5555,14375,14376],{"class":5634},"            uniqueWords",[5555,14378,5428],{"class":5603},[5555,14380,7975],{"class":5599},[5555,14382,5792],{"class":5603},[5555,14384,14262],{"class":5634},[5555,14386,5915],{"class":5603},[5555,14388,14389],{"class":5557,"line":5994},[5555,14390,12543],{"class":5603},[5555,14392,14393],{"class":5557,"line":6000},[5555,14394,5751],{"class":5603},[5555,14396,14397,14399,14401,14403,14405,14408,14410,14412,14414,14416,14418,14420,14422,14424],{"class":5557,"line":6029},[5555,14398,5617],{"class":5616},[5555,14400,5620],{"class":5603},[5555,14402,6067],{"class":5634},[5555,14404,6070],{"class":5603},[5555,14406,14407],{"class":5565},"\"Unique words: \"",[5555,14409,6070],{"class":5603},[5555,14411,14310],{"class":5634},[5555,14413,5428],{"class":5603},[5555,14415,5889],{"class":5599},[5555,14417,12474],{"class":5603},[5555,14419,6094],{"class":5565},[5555,14421,6098],{"class":6097},[5555,14423,6094],{"class":5565},[5555,14425,5779],{"class":5603},[5555,14427,14428,14430,14432,14434,14436,14438,14440,14442],{"class":5557,"line":6034},[5555,14429,6043],{"class":5561},[5555,14431,5439],{"class":5603},[5555,14433,9664],{"class":5595},[5555,14435,9667],{"class":5595},[5555,14437,14245],{"class":5634},[5555,14439,6052],{"class":5603},[5555,14441,14310],{"class":5634},[5555,14443,5897],{"class":5603},[5555,14445,14446,14448,14450,14452,14454,14457,14459,14461,14463,14465,14467,14469],{"class":5557,"line":6040},[5555,14447,6062],{"class":5616},[5555,14449,5620],{"class":5603},[5555,14451,6067],{"class":5634},[5555,14453,6070],{"class":5603},[5555,14455,14456],{"class":5565},"\"  - \"",[5555,14458,6070],{"class":5603},[5555,14460,14262],{"class":5634},[5555,14462,6070],{"class":5603},[5555,14464,6094],{"class":5565},[5555,14466,6098],{"class":6097},[5555,14468,6094],{"class":5565},[5555,14470,5779],{"class":5603},[5555,14472,14473],{"class":5557,"line":6059},[5555,14474,5751],{"class":5603},[5555,14476,14477,14479,14481],{"class":5557,"line":6083},[5555,14478,6113],{"class":5561},[5555,14480,6116],{"class":5641},[5555,14482,5779],{"class":5603},[5555,14484,14485],{"class":5557,"line":6105},[5555,14486,6124],{"class":5603},[5532,14488,14489],{},[5413,14490,14491],{},"Результат:",[5544,14493,14497],{"className":14494,"code":14496,"language":14185},[14495],"language-text","Unique words: 6\n  - Hello\n  - world\n  - this\n  - is\n  - a\n  - test\n",[5425,14498,14496],{"__ignoreMap":5551},[14099,14500,14502,15164,15168],{"title":14501},"Приклад 2: Аналіз даних — статистика чисел",[5544,14503,14505],{"className":5546,"code":14504,"language":5549,"meta":5551,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Cranges>\n#include \u003Cnumeric>\n#include \u003Calgorithm>\n\nint main()\n{\n    std::vector\u003Cint> data = {15, 23, 8, 42, 16, 4, 31, 27, 19, 11};\n    \n    \u002F\u002F Статистика через ranges\n    auto evenNumbers = data | std::views::filter([](int n) { return n % 2 == 0; });\n    auto oddNumbers = data | std::views::filter([](int n) { return n % 2 != 0; });\n    \n    \u002F\u002F Підрахунок\n    int evenCount = std::ranges::distance(evenNumbers);\n    int oddCount = std::ranges::distance(oddNumbers);\n    \n    \u002F\u002F Сума\n    int evenSum = std::ranges::fold_left(evenNumbers, 0, std::plus{});\n    int oddSum = std::ranges::fold_left(oddNumbers, 0, std::plus{});\n    \n    \u002F\u002F Мін\u002Fмакс\n    auto [minEven, maxEven] = std::ranges::minmax(evenNumbers);\n    auto [minOdd, maxOdd] = std::ranges::minmax(oddNumbers);\n    \n    std::cout \u003C\u003C \"=== Statistics ===\\n\";\n    std::cout \u003C\u003C \"Even numbers: \" \u003C\u003C evenCount \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"  Sum: \" \u003C\u003C evenSum \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"  Range: [\" \u003C\u003C minEven \u003C\u003C \", \" \u003C\u003C maxEven \u003C\u003C \"]\\n\";\n    \n    std::cout \u003C\u003C \"\\nOdd numbers: \" \u003C\u003C oddCount \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"  Sum: \" \u003C\u003C oddSum \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"  Range: [\" \u003C\u003C minOdd \u003C\u003C \", \" \u003C\u003C maxOdd \u003C\u003C \"]\\n\";\n    \n    return 0;\n}\n",[5425,14506,14507,14513,14519,14525,14531,14537,14541,14549,14553,14615,14619,14624,14669,14714,14718,14723,14750,14776,14780,14785,14822,14859,14863,14868,14903,14935,14939,14958,14986,15014,15051,15055,15087,15114,15148,15152,15160],{"__ignoreMap":5551},[5555,14508,14509,14511],{"class":5557,"line":5558},[5555,14510,5562],{"class":5561},[5555,14512,5566],{"class":5565},[5555,14514,14515,14517],{"class":5557,"line":5569},[5555,14516,5562],{"class":5561},[5555,14518,5574],{"class":5565},[5555,14520,14521,14523],{"class":5557,"line":5577},[5555,14522,5562],{"class":5561},[5555,14524,6206],{"class":5565},[5555,14526,14527,14529],{"class":5557,"line":5585},[5555,14528,5562],{"class":5561},[5555,14530,7006],{"class":5565},[5555,14532,14533,14535],{"class":5557,"line":5592},[5555,14534,5562],{"class":5561},[5555,14536,5582],{"class":5565},[5555,14538,14539],{"class":5557,"line":5607},[5555,14540,5589],{"emptyLinePlaceholder":5588},[5555,14542,14543,14545,14547],{"class":5557,"line":5613},[5555,14544,5596],{"class":5595},[5555,14546,5600],{"class":5599},[5555,14548,5604],{"class":5603},[5555,14550,14551],{"class":5557,"line":5694},[5555,14552,5610],{"class":5603},[5555,14554,14555,14557,14559,14561,14563,14565,14567,14570,14572,14574,14576,14579,14581,14583,14585,14587,14589,14591,14593,14595,14597,14600,14602,14605,14607,14609,14611,14613],{"class":5557,"line":5748},[5555,14556,5617],{"class":5616},[5555,14558,5620],{"class":5603},[5555,14560,5623],{"class":5616},[5555,14562,5626],{"class":5603},[5555,14564,5596],{"class":5595},[5555,14566,5631],{"class":5603},[5555,14568,14569],{"class":5634},"data",[5555,14571,5638],{"class":5603},[5555,14573,5717],{"class":5641},[5555,14575,5645],{"class":5603},[5555,14577,14578],{"class":5641},"23",[5555,14580,5645],{"class":5603},[5555,14582,5678],{"class":5641},[5555,14584,5645],{"class":5603},[5555,14586,8456],{"class":5641},[5555,14588,5645],{"class":5603},[5555,14590,5722],{"class":5641},[5555,14592,5645],{"class":5603},[5555,14594,5658],{"class":5641},[5555,14596,5645],{"class":5603},[5555,14598,14599],{"class":5641},"31",[5555,14601,5645],{"class":5603},[5555,14603,14604],{"class":5641},"27",[5555,14606,5645],{"class":5603},[5555,14608,5737],{"class":5641},[5555,14610,5645],{"class":5603},[5555,14612,8694],{"class":5641},[5555,14614,5745],{"class":5603},[5555,14616,14617],{"class":5557,"line":5754},[5555,14618,5751],{"class":5603},[5555,14620,14621],{"class":5557,"line":5761},[5555,14622,14623],{"class":5757},"    \u002F\u002F Статистика через ranges\n",[5555,14625,14626,14628,14631,14633,14635,14637,14639,14641,14643,14645,14647,14649,14651,14653,14655,14657,14659,14661,14663,14665,14667],{"class":5557,"line":5782},[5555,14627,6342],{"class":5595},[5555,14629,14630],{"class":5634}," evenNumbers",[5555,14632,6348],{"class":5603},[5555,14634,14569],{"class":5634},[5555,14636,7853],{"class":5603},[5555,14638,6359],{"class":5616},[5555,14640,5620],{"class":5603},[5555,14642,5434],{"class":5616},[5555,14644,5620],{"class":5603},[5555,14646,6368],{"class":5599},[5555,14648,6371],{"class":5603},[5555,14650,5596],{"class":5595},[5555,14652,5841],{"class":5634},[5555,14654,5844],{"class":5603},[5555,14656,5847],{"class":5561},[5555,14658,5841],{"class":5634},[5555,14660,5852],{"class":5603},[5555,14662,5648],{"class":5641},[5555,14664,5857],{"class":5603},[5555,14666,5860],{"class":5641},[5555,14668,5863],{"class":5603},[5555,14670,14671,14673,14676,14678,14680,14682,14684,14686,14688,14690,14692,14694,14696,14698,14700,14702,14704,14706,14708,14710,14712],{"class":5557,"line":5815},[5555,14672,6342],{"class":5595},[5555,14674,14675],{"class":5634}," oddNumbers",[5555,14677,6348],{"class":5603},[5555,14679,14569],{"class":5634},[5555,14681,7853],{"class":5603},[5555,14683,6359],{"class":5616},[5555,14685,5620],{"class":5603},[5555,14687,5434],{"class":5616},[5555,14689,5620],{"class":5603},[5555,14691,6368],{"class":5599},[5555,14693,6371],{"class":5603},[5555,14695,5596],{"class":5595},[5555,14697,5841],{"class":5634},[5555,14699,5844],{"class":5603},[5555,14701,5847],{"class":5561},[5555,14703,5841],{"class":5634},[5555,14705,5852],{"class":5603},[5555,14707,5648],{"class":5641},[5555,14709,13910],{"class":5603},[5555,14711,5860],{"class":5641},[5555,14713,5863],{"class":5603},[5555,14715,14716],{"class":5557,"line":5833},[5555,14717,5751],{"class":5603},[5555,14719,14720],{"class":5557,"line":5866},[5555,14721,14722],{"class":5757},"    \u002F\u002F Підрахунок\n",[5555,14724,14725,14727,14730,14732,14734,14736,14738,14740,14743,14745,14748],{"class":5557,"line":5871},[5555,14726,6892],{"class":5595},[5555,14728,14729],{"class":5634}," evenCount",[5555,14731,6348],{"class":5603},[5555,14733,6359],{"class":5616},[5555,14735,5620],{"class":5603},[5555,14737,6499],{"class":5616},[5555,14739,5620],{"class":5603},[5555,14741,14742],{"class":5599},"distance",[5555,14744,5792],{"class":5603},[5555,14746,14747],{"class":5634},"evenNumbers",[5555,14749,5915],{"class":5603},[5555,14751,14752,14754,14757,14759,14761,14763,14765,14767,14769,14771,14774],{"class":5557,"line":5877},[5555,14753,6892],{"class":5595},[5555,14755,14756],{"class":5634}," oddCount",[5555,14758,6348],{"class":5603},[5555,14760,6359],{"class":5616},[5555,14762,5620],{"class":5603},[5555,14764,6499],{"class":5616},[5555,14766,5620],{"class":5603},[5555,14768,14742],{"class":5599},[5555,14770,5792],{"class":5603},[5555,14772,14773],{"class":5634},"oddNumbers",[5555,14775,5915],{"class":5603},[5555,14777,14778],{"class":5557,"line":5900},[5555,14779,5751],{"class":5603},[5555,14781,14782],{"class":5557,"line":5918},[5555,14783,14784],{"class":5757},"    \u002F\u002F Сума\n",[5555,14786,14787,14789,14792,14794,14796,14798,14800,14802,14804,14806,14808,14810,14812,14814,14816,14818,14820],{"class":5557,"line":5923},[5555,14788,6892],{"class":5595},[5555,14790,14791],{"class":5634}," evenSum",[5555,14793,6348],{"class":5603},[5555,14795,6359],{"class":5616},[5555,14797,5620],{"class":5603},[5555,14799,6499],{"class":5616},[5555,14801,5620],{"class":5603},[5555,14803,7142],{"class":5599},[5555,14805,5792],{"class":5603},[5555,14807,14747],{"class":5634},[5555,14809,5645],{"class":5603},[5555,14811,5860],{"class":5641},[5555,14813,5645],{"class":5603},[5555,14815,6359],{"class":5616},[5555,14817,5620],{"class":5603},[5555,14819,7159],{"class":5634},[5555,14821,7162],{"class":5603},[5555,14823,14824,14826,14829,14831,14833,14835,14837,14839,14841,14843,14845,14847,14849,14851,14853,14855,14857],{"class":5557,"line":5929},[5555,14825,6892],{"class":5595},[5555,14827,14828],{"class":5634}," oddSum",[5555,14830,6348],{"class":5603},[5555,14832,6359],{"class":5616},[5555,14834,5620],{"class":5603},[5555,14836,6499],{"class":5616},[5555,14838,5620],{"class":5603},[5555,14840,7142],{"class":5599},[5555,14842,5792],{"class":5603},[5555,14844,14773],{"class":5634},[5555,14846,5645],{"class":5603},[5555,14848,5860],{"class":5641},[5555,14850,5645],{"class":5603},[5555,14852,6359],{"class":5616},[5555,14854,5620],{"class":5603},[5555,14856,7159],{"class":5634},[5555,14858,7162],{"class":5603},[5555,14860,14861],{"class":5557,"line":5966},[5555,14862,5751],{"class":5603},[5555,14864,14865],{"class":5557,"line":5989},[5555,14866,14867],{"class":5757},"    \u002F\u002F Мін\u002Fмакс\n",[5555,14869,14870,14872,14875,14878,14880,14883,14886,14888,14890,14892,14894,14897,14899,14901],{"class":5557,"line":5994},[5555,14871,6342],{"class":5595},[5555,14873,14874],{"class":5603}," [",[5555,14876,14877],{"class":5634},"minEven",[5555,14879,5645],{"class":5603},[5555,14881,14882],{"class":5634},"maxEven",[5555,14884,14885],{"class":5603},"] = ",[5555,14887,6359],{"class":5616},[5555,14889,5620],{"class":5603},[5555,14891,6499],{"class":5616},[5555,14893,5620],{"class":5603},[5555,14895,14896],{"class":5599},"minmax",[5555,14898,5792],{"class":5603},[5555,14900,14747],{"class":5634},[5555,14902,5915],{"class":5603},[5555,14904,14905,14907,14909,14912,14914,14917,14919,14921,14923,14925,14927,14929,14931,14933],{"class":5557,"line":6000},[5555,14906,6342],{"class":5595},[5555,14908,14874],{"class":5603},[5555,14910,14911],{"class":5634},"minOdd",[5555,14913,5645],{"class":5603},[5555,14915,14916],{"class":5634},"maxOdd",[5555,14918,14885],{"class":5603},[5555,14920,6359],{"class":5616},[5555,14922,5620],{"class":5603},[5555,14924,6499],{"class":5616},[5555,14926,5620],{"class":5603},[5555,14928,14896],{"class":5599},[5555,14930,5792],{"class":5603},[5555,14932,14773],{"class":5634},[5555,14934,5915],{"class":5603},[5555,14936,14937],{"class":5557,"line":6029},[5555,14938,5751],{"class":5603},[5555,14940,14941,14943,14945,14947,14949,14952,14954,14956],{"class":5557,"line":6034},[5555,14942,5617],{"class":5616},[5555,14944,5620],{"class":5603},[5555,14946,6067],{"class":5634},[5555,14948,6070],{"class":5603},[5555,14950,14951],{"class":5565},"\"=== Statistics ===",[5555,14953,6098],{"class":6097},[5555,14955,6094],{"class":5565},[5555,14957,5779],{"class":5603},[5555,14959,14960,14962,14964,14966,14968,14971,14973,14976,14978,14980,14982,14984],{"class":5557,"line":6040},[5555,14961,5617],{"class":5616},[5555,14963,5620],{"class":5603},[5555,14965,6067],{"class":5634},[5555,14967,6070],{"class":5603},[5555,14969,14970],{"class":5565},"\"Even numbers: \"",[5555,14972,6070],{"class":5603},[5555,14974,14975],{"class":5634},"evenCount",[5555,14977,6070],{"class":5603},[5555,14979,6094],{"class":5565},[5555,14981,6098],{"class":6097},[5555,14983,6094],{"class":5565},[5555,14985,5779],{"class":5603},[5555,14987,14988,14990,14992,14994,14996,14999,15001,15004,15006,15008,15010,15012],{"class":5557,"line":6059},[5555,14989,5617],{"class":5616},[5555,14991,5620],{"class":5603},[5555,14993,6067],{"class":5634},[5555,14995,6070],{"class":5603},[5555,14997,14998],{"class":5565},"\"  Sum: \"",[5555,15000,6070],{"class":5603},[5555,15002,15003],{"class":5634},"evenSum",[5555,15005,6070],{"class":5603},[5555,15007,6094],{"class":5565},[5555,15009,6098],{"class":6097},[5555,15011,6094],{"class":5565},[5555,15013,5779],{"class":5603},[5555,15015,15016,15018,15020,15022,15024,15027,15029,15031,15033,15036,15038,15040,15042,15045,15047,15049],{"class":5557,"line":6083},[5555,15017,5617],{"class":5616},[5555,15019,5620],{"class":5603},[5555,15021,6067],{"class":5634},[5555,15023,6070],{"class":5603},[5555,15025,15026],{"class":5565},"\"  Range: [\"",[5555,15028,6070],{"class":5603},[5555,15030,14877],{"class":5634},[5555,15032,6070],{"class":5603},[5555,15034,15035],{"class":5565},"\", \"",[5555,15037,6070],{"class":5603},[5555,15039,14882],{"class":5634},[5555,15041,6070],{"class":5603},[5555,15043,15044],{"class":5565},"\"]",[5555,15046,6098],{"class":6097},[5555,15048,6094],{"class":5565},[5555,15050,5779],{"class":5603},[5555,15052,15053],{"class":5557,"line":6105},[5555,15054,5751],{"class":5603},[5555,15056,15057,15059,15061,15063,15065,15067,15069,15072,15074,15077,15079,15081,15083,15085],{"class":5557,"line":6110},[5555,15058,5617],{"class":5616},[5555,15060,5620],{"class":5603},[5555,15062,6067],{"class":5634},[5555,15064,6070],{"class":5603},[5555,15066,6094],{"class":5565},[5555,15068,6098],{"class":6097},[5555,15070,15071],{"class":5565},"Odd numbers: \"",[5555,15073,6070],{"class":5603},[5555,15075,15076],{"class":5634},"oddCount",[5555,15078,6070],{"class":5603},[5555,15080,6094],{"class":5565},[5555,15082,6098],{"class":6097},[5555,15084,6094],{"class":5565},[5555,15086,5779],{"class":5603},[5555,15088,15089,15091,15093,15095,15097,15099,15101,15104,15106,15108,15110,15112],{"class":5557,"line":6121},[5555,15090,5617],{"class":5616},[5555,15092,5620],{"class":5603},[5555,15094,6067],{"class":5634},[5555,15096,6070],{"class":5603},[5555,15098,14998],{"class":5565},[5555,15100,6070],{"class":5603},[5555,15102,15103],{"class":5634},"oddSum",[5555,15105,6070],{"class":5603},[5555,15107,6094],{"class":5565},[5555,15109,6098],{"class":6097},[5555,15111,6094],{"class":5565},[5555,15113,5779],{"class":5603},[5555,15115,15116,15118,15120,15122,15124,15126,15128,15130,15132,15134,15136,15138,15140,15142,15144,15146],{"class":5557,"line":7404},[5555,15117,5617],{"class":5616},[5555,15119,5620],{"class":5603},[5555,15121,6067],{"class":5634},[5555,15123,6070],{"class":5603},[5555,15125,15026],{"class":5565},[5555,15127,6070],{"class":5603},[5555,15129,14911],{"class":5634},[5555,15131,6070],{"class":5603},[5555,15133,15035],{"class":5565},[5555,15135,6070],{"class":5603},[5555,15137,14916],{"class":5634},[5555,15139,6070],{"class":5603},[5555,15141,15044],{"class":5565},[5555,15143,6098],{"class":6097},[5555,15145,6094],{"class":5565},[5555,15147,5779],{"class":5603},[5555,15149,15150],{"class":5557,"line":7409},[5555,15151,5751],{"class":5603},[5555,15153,15154,15156,15158],{"class":5557,"line":7414},[5555,15155,6113],{"class":5561},[5555,15157,6116],{"class":5641},[5555,15159,5779],{"class":5603},[5555,15161,15162],{"class":5557,"line":7420},[5555,15163,6124],{"class":5603},[5532,15165,15166],{},[5413,15167,14491],{},[5544,15169,15172],{"className":15170,"code":15171,"language":14185},[14495],"=== Statistics ===\nEven numbers: 5\n  Sum: 86\n  Range: [4, 42]\n\nOdd numbers: 5\n  Sum: 111\n  Range: [11, 31]\n",[5425,15173,15171],{"__ignoreMap":5551},[14099,15175,15177,15438,15442],{"title":15176},"Приклад 3: Генерація послідовностей — таблиця множення",[5544,15178,15180],{"className":5546,"code":15179,"language":5549,"meta":5551,"style":5551},"#include \u003Ciostream>\n#include \u003Cranges>\n\nint main()\n{\n    std::cout \u003C\u003C \"=== Multiplication Table (1-10) ===\\n\";\n    \n    \u002F\u002F Генеруємо рядки\n    for (int i : std::views::iota(1, 11))\n    {\n        \u002F\u002F Генеруємо стовпці\n        auto row = std::views::iota(1, 11)\n            | std::views::transform([i](int j) { return i * j; });\n        \n        for (int product : row)\n            std::cout \u003C\u003C product \u003C\u003C \"\\t\";\n        \n        std::cout \u003C\u003C \"\\n\";\n    }\n    \n    return 0;\n}\n",[5425,15181,15182,15188,15194,15198,15206,15210,15229,15233,15238,15271,15275,15280,15309,15350,15354,15372,15396,15400,15418,15422,15426,15434],{"__ignoreMap":5551},[5555,15183,15184,15186],{"class":5557,"line":5558},[5555,15185,5562],{"class":5561},[5555,15187,5566],{"class":5565},[5555,15189,15190,15192],{"class":5557,"line":5569},[5555,15191,5562],{"class":5561},[5555,15193,6206],{"class":5565},[5555,15195,15196],{"class":5557,"line":5577},[5555,15197,5589],{"emptyLinePlaceholder":5588},[5555,15199,15200,15202,15204],{"class":5557,"line":5585},[5555,15201,5596],{"class":5595},[5555,15203,5600],{"class":5599},[5555,15205,5604],{"class":5603},[5555,15207,15208],{"class":5557,"line":5592},[5555,15209,5610],{"class":5603},[5555,15211,15212,15214,15216,15218,15220,15223,15225,15227],{"class":5557,"line":5607},[5555,15213,5617],{"class":5616},[5555,15215,5620],{"class":5603},[5555,15217,6067],{"class":5634},[5555,15219,6070],{"class":5603},[5555,15221,15222],{"class":5565},"\"=== Multiplication Table (1-10) ===",[5555,15224,6098],{"class":6097},[5555,15226,6094],{"class":5565},[5555,15228,5779],{"class":5603},[5555,15230,15231],{"class":5557,"line":5613},[5555,15232,5751],{"class":5603},[5555,15234,15235],{"class":5557,"line":5694},[5555,15236,15237],{"class":5757},"    \u002F\u002F Генеруємо рядки\n",[5555,15239,15240,15242,15244,15246,15249,15251,15253,15255,15257,15259,15261,15263,15265,15267,15269],{"class":5557,"line":5748},[5555,15241,6043],{"class":5561},[5555,15243,5439],{"class":5603},[5555,15245,5596],{"class":5595},[5555,15247,15248],{"class":5634}," i",[5555,15250,6052],{"class":5603},[5555,15252,6359],{"class":5616},[5555,15254,5620],{"class":5603},[5555,15256,5434],{"class":5616},[5555,15258,5620],{"class":5603},[5555,15260,8492],{"class":5599},[5555,15262,5792],{"class":5603},[5555,15264,5642],{"class":5641},[5555,15266,5645],{"class":5603},[5555,15268,8694],{"class":5641},[5555,15270,8697],{"class":5603},[5555,15272,15273],{"class":5557,"line":5754},[5555,15274,12361],{"class":5603},[5555,15276,15277],{"class":5557,"line":5761},[5555,15278,15279],{"class":5757},"        \u002F\u002F Генеруємо стовпці\n",[5555,15281,15282,15284,15287,15289,15291,15293,15295,15297,15299,15301,15303,15305,15307],{"class":5557,"line":5782},[5555,15283,12584],{"class":5595},[5555,15285,15286],{"class":5634}," row",[5555,15288,6348],{"class":5603},[5555,15290,6359],{"class":5616},[5555,15292,5620],{"class":5603},[5555,15294,5434],{"class":5616},[5555,15296,5620],{"class":5603},[5555,15298,8492],{"class":5599},[5555,15300,5792],{"class":5603},[5555,15302,5642],{"class":5641},[5555,15304,5645],{"class":5603},[5555,15306,8694],{"class":5641},[5555,15308,5897],{"class":5603},[5555,15310,15311,15313,15315,15317,15319,15321,15323,15326,15329,15332,15334,15337,15339,15341,15343,15345,15348],{"class":5557,"line":5815},[5555,15312,12595],{"class":5603},[5555,15314,6359],{"class":5616},[5555,15316,5620],{"class":5603},[5555,15318,5434],{"class":5616},[5555,15320,5620],{"class":5603},[5555,15322,5936],{"class":5599},[5555,15324,15325],{"class":5603},"([",[5555,15327,15328],{"class":5634},"i",[5555,15330,15331],{"class":5603},"](",[5555,15333,5596],{"class":5595},[5555,15335,15336],{"class":5634}," j",[5555,15338,5844],{"class":5603},[5555,15340,5847],{"class":5561},[5555,15342,15248],{"class":5634},[5555,15344,5982],{"class":5603},[5555,15346,15347],{"class":5634},"j",[5555,15349,5863],{"class":5603},[5555,15351,15352],{"class":5557,"line":5833},[5555,15353,12488],{"class":5603},[5555,15355,15356,15358,15360,15362,15365,15367,15370],{"class":5557,"line":5866},[5555,15357,10963],{"class":5561},[5555,15359,5439],{"class":5603},[5555,15361,5596],{"class":5595},[5555,15363,15364],{"class":5634}," product",[5555,15366,6052],{"class":5603},[5555,15368,15369],{"class":5634},"row",[5555,15371,5897],{"class":5603},[5555,15373,15374,15376,15378,15380,15382,15385,15387,15389,15392,15394],{"class":5557,"line":5871},[5555,15375,10981],{"class":5616},[5555,15377,5620],{"class":5603},[5555,15379,6067],{"class":5634},[5555,15381,6070],{"class":5603},[5555,15383,15384],{"class":5634},"product",[5555,15386,6070],{"class":5603},[5555,15388,6094],{"class":5565},[5555,15390,15391],{"class":6097},"\\t",[5555,15393,6094],{"class":5565},[5555,15395,5779],{"class":5603},[5555,15397,15398],{"class":5557,"line":5877},[5555,15399,12488],{"class":5603},[5555,15401,15402,15404,15406,15408,15410,15412,15414,15416],{"class":5557,"line":5900},[5555,15403,6062],{"class":5616},[5555,15405,5620],{"class":5603},[5555,15407,6067],{"class":5634},[5555,15409,6070],{"class":5603},[5555,15411,6094],{"class":5565},[5555,15413,6098],{"class":6097},[5555,15415,6094],{"class":5565},[5555,15417,5779],{"class":5603},[5555,15419,15420],{"class":5557,"line":5918},[5555,15421,12543],{"class":5603},[5555,15423,15424],{"class":5557,"line":5923},[5555,15425,5751],{"class":5603},[5555,15427,15428,15430,15432],{"class":5557,"line":5929},[5555,15429,6113],{"class":5561},[5555,15431,6116],{"class":5641},[5555,15433,5779],{"class":5603},[5555,15435,15436],{"class":5557,"line":5966},[5555,15437,6124],{"class":5603},[5532,15439,15440],{},[5413,15441,14491],{},[5544,15443,15446],{"className":15444,"code":15445,"language":14185},[14495],"=== Multiplication Table (1-10) ===\n1   2   3   4   5   6   7   8   9   10  \n2   4   6   8   10  12  14  16  18  20  \n3   6   9   12  15  18  21  24  27  30  \n4   8   12  16  20  24  28  32  36  40  \n5   10  15  20  25  30  35  40  45  50  \n6   12  18  24  30  36  42  48  54  60  \n7   14  21  28  35  42  49  56  63  70  \n8   16  24  32  40  48  56  64  72  80  \n9   18  27  36  45  54  63  72  81  90  \n10  20  30  40  50  60  70  80  90  100 \n",[5425,15447,15445],{"__ignoreMap":5551},[14099,15449,15451],{"title":15450},"Приклад 4: Фільтрація файлів — пошук великих файлів",[5544,15452,15454],{"className":5546,"code":15453,"language":5549,"meta":5551,"style":5551},"#include \u003Ciostream>\n#include \u003Cfilesystem>\n#include \u003Cranges>\n#include \u003Calgorithm>\n\nnamespace fs = std::filesystem;\n\nint main()\n{\n    fs::path directory = \".\";  \u002F\u002F Поточна директорія\n    \n    std::cout \u003C\u003C \"Large files (>1MB):\\n\";\n    \n    \u002F\u002F Обхід файлів через ranges\n    for (const auto& entry : fs::recursive_directory_iterator(directory)\n                           | std::views::filter([](const auto& e) {\n                               return e.is_regular_file() &&\n                                      e.file_size() > 1'000'000;\n                           })\n                           | std::views::take(10))  \u002F\u002F Перші 10\n    {\n        auto size_mb = entry.file_size() \u002F 1'000'000.0;\n        std::cout \u003C\u003C \"  \" \u003C\u003C entry.path().filename()\n                  \u003C\u003C \" (\" \u003C\u003C size_mb \u003C\u003C \" MB)\\n\";\n    }\n    \n    return 0;\n}\n",[5425,15455,15456,15462,15469,15475,15481,15485,15504,15508,15516,15520,15543,15547,15566,15570,15575,15605,15631,15646,15662,15667,15691,15695,15719,15747,15770,15774,15778,15786],{"__ignoreMap":5551},[5555,15457,15458,15460],{"class":5557,"line":5558},[5555,15459,5562],{"class":5561},[5555,15461,5566],{"class":5565},[5555,15463,15464,15466],{"class":5557,"line":5569},[5555,15465,5562],{"class":5561},[5555,15467,15468],{"class":5565}," \u003Cfilesystem>\n",[5555,15470,15471,15473],{"class":5557,"line":5577},[5555,15472,5562],{"class":5561},[5555,15474,6206],{"class":5565},[5555,15476,15477,15479],{"class":5557,"line":5585},[5555,15478,5562],{"class":5561},[5555,15480,5582],{"class":5565},[5555,15482,15483],{"class":5557,"line":5592},[5555,15484,5589],{"emptyLinePlaceholder":5588},[5555,15486,15487,15490,15493,15495,15497,15499,15502],{"class":5557,"line":5607},[5555,15488,15489],{"class":5595},"namespace",[5555,15491,15492],{"class":5616}," fs",[5555,15494,6348],{"class":5603},[5555,15496,6359],{"class":5616},[5555,15498,5620],{"class":5603},[5555,15500,15501],{"class":5616},"filesystem",[5555,15503,5779],{"class":5603},[5555,15505,15506],{"class":5557,"line":5613},[5555,15507,5589],{"emptyLinePlaceholder":5588},[5555,15509,15510,15512,15514],{"class":5557,"line":5694},[5555,15511,5596],{"class":5595},[5555,15513,5600],{"class":5599},[5555,15515,5604],{"class":5603},[5555,15517,15518],{"class":5557,"line":5748},[5555,15519,5610],{"class":5603},[5555,15521,15522,15525,15527,15530,15533,15535,15538,15540],{"class":5557,"line":5754},[5555,15523,15524],{"class":5616},"    fs",[5555,15526,5620],{"class":5603},[5555,15528,15529],{"class":5616},"path",[5555,15531,15532],{"class":5634}," directory",[5555,15534,6348],{"class":5603},[5555,15536,15537],{"class":5565},"\".\"",[5555,15539,11584],{"class":5603},[5555,15541,15542],{"class":5757},"  \u002F\u002F Поточна директорія\n",[5555,15544,15545],{"class":5557,"line":5761},[5555,15546,5751],{"class":5603},[5555,15548,15549,15551,15553,15555,15557,15560,15562,15564],{"class":5557,"line":5782},[5555,15550,5617],{"class":5616},[5555,15552,5620],{"class":5603},[5555,15554,6067],{"class":5634},[5555,15556,6070],{"class":5603},[5555,15558,15559],{"class":5565},"\"Large files (>1MB):",[5555,15561,6098],{"class":6097},[5555,15563,6094],{"class":5565},[5555,15565,5779],{"class":5603},[5555,15567,15568],{"class":5557,"line":5815},[5555,15569,5751],{"class":5603},[5555,15571,15572],{"class":5557,"line":5833},[5555,15573,15574],{"class":5757},"    \u002F\u002F Обхід файлів через ranges\n",[5555,15576,15577,15579,15581,15583,15585,15588,15590,15593,15595,15598,15600,15603],{"class":5557,"line":5866},[5555,15578,6043],{"class":5561},[5555,15580,5439],{"class":5603},[5555,15582,9664],{"class":5595},[5555,15584,9667],{"class":5595},[5555,15586,15587],{"class":5634}," entry",[5555,15589,6052],{"class":5603},[5555,15591,15592],{"class":5616},"fs",[5555,15594,5620],{"class":5603},[5555,15596,15597],{"class":5599},"recursive_directory_iterator",[5555,15599,5792],{"class":5603},[5555,15601,15602],{"class":5634},"directory",[5555,15604,5897],{"class":5603},[5555,15606,15607,15610,15612,15614,15616,15618,15620,15622,15624,15626,15629],{"class":5557,"line":5871},[5555,15608,15609],{"class":5603},"                           | ",[5555,15611,6359],{"class":5616},[5555,15613,5620],{"class":5603},[5555,15615,5434],{"class":5616},[5555,15617,5620],{"class":5603},[5555,15619,6368],{"class":5599},[5555,15621,6371],{"class":5603},[5555,15623,9664],{"class":5595},[5555,15625,9667],{"class":5595},[5555,15627,15628],{"class":5634}," e",[5555,15630,9556],{"class":5603},[5555,15632,15633,15636,15638,15640,15643],{"class":5557,"line":5877},[5555,15634,15635],{"class":5561},"                               return",[5555,15637,15628],{"class":5634},[5555,15639,5428],{"class":5603},[5555,15641,15642],{"class":5599},"is_regular_file",[5555,15644,15645],{"class":5603},"() &&\n",[5555,15647,15648,15651,15653,15656,15658,15660],{"class":5557,"line":5900},[5555,15649,15650],{"class":5634},"                                      e",[5555,15652,5428],{"class":5603},[5555,15654,15655],{"class":5599},"file_size",[5555,15657,5892],{"class":5603},[5555,15659,12298],{"class":5641},[5555,15661,5779],{"class":5603},[5555,15663,15664],{"class":5557,"line":5918},[5555,15665,15666],{"class":5603},"                           })\n",[5555,15668,15669,15671,15673,15675,15677,15679,15681,15683,15685,15688],{"class":5557,"line":5923},[5555,15670,15609],{"class":5603},[5555,15672,6359],{"class":5616},[5555,15674,5620],{"class":5603},[5555,15676,5434],{"class":5616},[5555,15678,5620],{"class":5603},[5555,15680,6407],{"class":5599},[5555,15682,5792],{"class":5603},[5555,15684,5688],{"class":5641},[5555,15686,15687],{"class":5603},"))",[5555,15689,15690],{"class":5757},"  \u002F\u002F Перші 10\n",[5555,15692,15693],{"class":5557,"line":5929},[5555,15694,12361],{"class":5603},[5555,15696,15697,15699,15702,15704,15707,15709,15711,15714,15717],{"class":5557,"line":5966},[5555,15698,12584],{"class":5595},[5555,15700,15701],{"class":5634}," size_mb",[5555,15703,6348],{"class":5603},[5555,15705,15706],{"class":5634},"entry",[5555,15708,5428],{"class":5603},[5555,15710,15655],{"class":5599},[5555,15712,15713],{"class":5603},"() \u002F ",[5555,15715,15716],{"class":5641},"1'000'000.0",[5555,15718,5779],{"class":5603},[5555,15720,15721,15723,15725,15727,15729,15731,15733,15735,15737,15739,15742,15745],{"class":5557,"line":5989},[5555,15722,6062],{"class":5616},[5555,15724,5620],{"class":5603},[5555,15726,6067],{"class":5634},[5555,15728,6070],{"class":5603},[5555,15730,13816],{"class":5565},[5555,15732,6070],{"class":5603},[5555,15734,15706],{"class":5634},[5555,15736,5428],{"class":5603},[5555,15738,15529],{"class":5599},[5555,15740,15741],{"class":5603},"().",[5555,15743,15744],{"class":5599},"filename",[5555,15746,5604],{"class":5603},[5555,15748,15749,15752,15754,15756,15759,15761,15764,15766,15768],{"class":5557,"line":5994},[5555,15750,15751],{"class":5603},"                  \u003C\u003C ",[5555,15753,13829],{"class":5565},[5555,15755,6070],{"class":5603},[5555,15757,15758],{"class":5634},"size_mb",[5555,15760,6070],{"class":5603},[5555,15762,15763],{"class":5565},"\" MB)",[5555,15765,6098],{"class":6097},[5555,15767,6094],{"class":5565},[5555,15769,5779],{"class":5603},[5555,15771,15772],{"class":5557,"line":6000},[5555,15773,12543],{"class":5603},[5555,15775,15776],{"class":5557,"line":6029},[5555,15777,5751],{"class":5603},[5555,15779,15780,15782,15784],{"class":5557,"line":6034},[5555,15781,6113],{"class":5561},[5555,15783,6116],{"class":5641},[5555,15785,5779],{"class":5603},[5555,15787,15788],{"class":5557,"line":6040},[5555,15789,6124],{"class":5603},[5524,15791],{},[5527,15793,15795],{"id":15794},"продуктивність-ranges-vs-stl-algorithms","Продуктивність: Ranges vs STL algorithms",[5539,15797,15799],{"id":15798},"benchmark-фільтрація-та-трансформація","Benchmark: фільтрація та трансформація",[5544,15801,15804],{"className":5546,"code":15802,"filename":15803,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Cranges>\n#include \u003Calgorithm>\n#include \u003Cchrono>\n\nusing namespace std::chrono;\n\nint main()\n{\n    constexpr size_t SIZE = 1'000'000;\n    std::vector\u003Cint> data(SIZE);\n    std::iota(data.begin(), data.end(), 1);\n    \n    \u002F\u002F === STL Eager ===\n    {\n        auto start = high_resolution_clock::now();\n        \n        std::vector\u003Cint> filtered;\n        std::copy_if(data.begin(), data.end(),\n                     std::back_inserter(filtered),\n                     [](int n) { return n % 2 == 0; });\n        \n        std::vector\u003Cint> transformed;\n        std::transform(filtered.begin(), filtered.end(),\n                       std::back_inserter(transformed),\n                       [](int n) { return n * 2; });\n        \n        std::vector\u003Cint> result;\n        std::copy_n(transformed.begin(), 100, std::back_inserter(result));\n        \n        auto end = high_resolution_clock::now();\n        auto duration = duration_cast\u003Cmicroseconds>(end - start);\n        \n        std::cout \u003C\u003C \"STL Eager: \" \u003C\u003C duration.count() \u003C\u003C \" μs\\n\";\n        std::cout \u003C\u003C \"  Result size: \" \u003C\u003C result.size() \u003C\u003C \"\\n\";\n    }\n    \n    \u002F\u002F === Ranges Lazy ===\n    {\n        auto start = high_resolution_clock::now();\n        \n        auto view = data\n            | std::views::filter([](int n) { return n % 2 == 0; })\n            | std::views::transform([](int n) { return n * 2; })\n            | std::views::take(100);\n        \n        std::vector\u003Cint> result(view.begin(), view.end());\n        \n        auto end = high_resolution_clock::now();\n        auto duration = duration_cast\u003Cmicroseconds>(end - start);\n        \n        std::cout \u003C\u003C \"Ranges Lazy: \" \u003C\u003C duration.count() \u003C\u003C \" μs\\n\";\n        std::cout \u003C\u003C \"  Result size: \" \u003C\u003C result.size() \u003C\u003C \"\\n\";\n    }\n    \n    return 0;\n}\n","PerformanceBenchmark.cpp",[5425,15805,15806,15812,15818,15824,15830,15837,15841,15858,15862,15870,15874,15891,15914,15944,15948,15953,15957,15976,15980,15999,16025,16039,16063,16067,16086,16112,16127,16147,16151,16169,16205,16209,16226,16256,16260,16293,16324,16328,16332,16337,16341,16357,16361,16372,16408,16440,16460,16464,16498,16502,16518,16542,16546,16577,16607,16611,16615,16623],{"__ignoreMap":5551},[5555,15807,15808,15810],{"class":5557,"line":5558},[5555,15809,5562],{"class":5561},[5555,15811,5566],{"class":5565},[5555,15813,15814,15816],{"class":5557,"line":5569},[5555,15815,5562],{"class":5561},[5555,15817,5574],{"class":5565},[5555,15819,15820,15822],{"class":5557,"line":5577},[5555,15821,5562],{"class":5561},[5555,15823,6206],{"class":5565},[5555,15825,15826,15828],{"class":5557,"line":5585},[5555,15827,5562],{"class":5561},[5555,15829,5582],{"class":5565},[5555,15831,15832,15834],{"class":5557,"line":5592},[5555,15833,5562],{"class":5561},[5555,15835,15836],{"class":5565}," \u003Cchrono>\n",[5555,15838,15839],{"class":5557,"line":5607},[5555,15840,5589],{"emptyLinePlaceholder":5588},[5555,15842,15843,15846,15849,15851,15853,15856],{"class":5557,"line":5613},[5555,15844,15845],{"class":5561},"using",[5555,15847,15848],{"class":5595}," namespace",[5555,15850,9564],{"class":5616},[5555,15852,5620],{"class":5603},[5555,15854,15855],{"class":5616},"chrono",[5555,15857,5779],{"class":5603},[5555,15859,15860],{"class":5557,"line":5694},[5555,15861,5589],{"emptyLinePlaceholder":5588},[5555,15863,15864,15866,15868],{"class":5557,"line":5748},[5555,15865,5596],{"class":5595},[5555,15867,5600],{"class":5599},[5555,15869,5604],{"class":5603},[5555,15871,15872],{"class":5557,"line":5754},[5555,15873,5610],{"class":5603},[5555,15875,15876,15879,15882,15885,15887,15889],{"class":5557,"line":5761},[5555,15877,15878],{"class":5595},"    constexpr",[5555,15880,15881],{"class":5595}," size_t",[5555,15883,15884],{"class":5634}," SIZE",[5555,15886,6348],{"class":5603},[5555,15888,12298],{"class":5641},[5555,15890,5779],{"class":5603},[5555,15892,15893,15895,15897,15899,15901,15903,15905,15907,15909,15912],{"class":5557,"line":5782},[5555,15894,5617],{"class":5616},[5555,15896,5620],{"class":5603},[5555,15898,5623],{"class":5616},[5555,15900,5626],{"class":5603},[5555,15902,5596],{"class":5595},[5555,15904,5631],{"class":5603},[5555,15906,14569],{"class":5599},[5555,15908,5792],{"class":5603},[5555,15910,15911],{"class":5634},"SIZE",[5555,15913,5915],{"class":5603},[5555,15915,15916,15918,15920,15922,15924,15926,15928,15930,15932,15934,15936,15938,15940,15942],{"class":5557,"line":5815},[5555,15917,5617],{"class":5616},[5555,15919,5620],{"class":5603},[5555,15921,8492],{"class":5599},[5555,15923,5792],{"class":5603},[5555,15925,14569],{"class":5634},[5555,15927,5428],{"class":5603},[5555,15929,5799],{"class":5599},[5555,15931,5802],{"class":5603},[5555,15933,14569],{"class":5634},[5555,15935,5428],{"class":5603},[5555,15937,5809],{"class":5599},[5555,15939,5802],{"class":5603},[5555,15941,5642],{"class":5641},[5555,15943,5915],{"class":5603},[5555,15945,15946],{"class":5557,"line":5833},[5555,15947,5751],{"class":5603},[5555,15949,15950],{"class":5557,"line":5866},[5555,15951,15952],{"class":5757},"    \u002F\u002F === STL Eager ===\n",[5555,15954,15955],{"class":5557,"line":5871},[5555,15956,12361],{"class":5603},[5555,15958,15959,15961,15964,15966,15969,15971,15974],{"class":5557,"line":5877},[5555,15960,12584],{"class":5595},[5555,15962,15963],{"class":5634}," start",[5555,15965,6348],{"class":5603},[5555,15967,15968],{"class":5616},"high_resolution_clock",[5555,15970,5620],{"class":5603},[5555,15972,15973],{"class":5599},"now",[5555,15975,8210],{"class":5603},[5555,15977,15978],{"class":5557,"line":5900},[5555,15979,12488],{"class":5603},[5555,15981,15982,15984,15986,15988,15990,15992,15994,15997],{"class":5557,"line":5918},[5555,15983,6062],{"class":5616},[5555,15985,5620],{"class":5603},[5555,15987,5623],{"class":5616},[5555,15989,5626],{"class":5603},[5555,15991,5596],{"class":5595},[5555,15993,5631],{"class":5603},[5555,15995,15996],{"class":5634},"filtered",[5555,15998,5779],{"class":5603},[5555,16000,16001,16003,16005,16007,16009,16011,16013,16015,16017,16019,16021,16023],{"class":5557,"line":5923},[5555,16002,6062],{"class":5616},[5555,16004,5620],{"class":5603},[5555,16006,5789],{"class":5599},[5555,16008,5792],{"class":5603},[5555,16010,14569],{"class":5634},[5555,16012,5428],{"class":5603},[5555,16014,5799],{"class":5599},[5555,16016,5802],{"class":5603},[5555,16018,14569],{"class":5634},[5555,16020,5428],{"class":5603},[5555,16022,5809],{"class":5599},[5555,16024,5963],{"class":5603},[5555,16026,16027,16029,16031,16033,16035,16037],{"class":5557,"line":5929},[5555,16028,12415],{"class":5616},[5555,16030,5620],{"class":5603},[5555,16032,5823],{"class":5599},[5555,16034,5792],{"class":5603},[5555,16036,15996],{"class":5634},[5555,16038,5830],{"class":5603},[5555,16040,16041,16043,16045,16047,16049,16051,16053,16055,16057,16059,16061],{"class":5557,"line":5966},[5555,16042,12430],{"class":5603},[5555,16044,5596],{"class":5595},[5555,16046,5841],{"class":5634},[5555,16048,5844],{"class":5603},[5555,16050,5847],{"class":5561},[5555,16052,5841],{"class":5634},[5555,16054,5852],{"class":5603},[5555,16056,5648],{"class":5641},[5555,16058,5857],{"class":5603},[5555,16060,5860],{"class":5641},[5555,16062,5863],{"class":5603},[5555,16064,16065],{"class":5557,"line":5989},[5555,16066,12488],{"class":5603},[5555,16068,16069,16071,16073,16075,16077,16079,16081,16084],{"class":5557,"line":5994},[5555,16070,6062],{"class":5616},[5555,16072,5620],{"class":5603},[5555,16074,5623],{"class":5616},[5555,16076,5626],{"class":5603},[5555,16078,5596],{"class":5595},[5555,16080,5631],{"class":5603},[5555,16082,16083],{"class":5634},"transformed",[5555,16085,5779],{"class":5603},[5555,16087,16088,16090,16092,16094,16096,16098,16100,16102,16104,16106,16108,16110],{"class":5557,"line":6000},[5555,16089,6062],{"class":5616},[5555,16091,5620],{"class":5603},[5555,16093,5936],{"class":5599},[5555,16095,5792],{"class":5603},[5555,16097,15996],{"class":5634},[5555,16099,5428],{"class":5603},[5555,16101,5799],{"class":5599},[5555,16103,5802],{"class":5603},[5555,16105,15996],{"class":5634},[5555,16107,5428],{"class":5603},[5555,16109,5809],{"class":5599},[5555,16111,5963],{"class":5603},[5555,16113,16114,16117,16119,16121,16123,16125],{"class":5557,"line":6029},[5555,16115,16116],{"class":5616},"                       std",[5555,16118,5620],{"class":5603},[5555,16120,5823],{"class":5599},[5555,16122,5792],{"class":5603},[5555,16124,16083],{"class":5634},[5555,16126,5830],{"class":5603},[5555,16128,16129,16131,16133,16135,16137,16139,16141,16143,16145],{"class":5557,"line":6034},[5555,16130,13539],{"class":5603},[5555,16132,5596],{"class":5595},[5555,16134,5841],{"class":5634},[5555,16136,5844],{"class":5603},[5555,16138,5847],{"class":5561},[5555,16140,5841],{"class":5634},[5555,16142,5982],{"class":5603},[5555,16144,5648],{"class":5641},[5555,16146,5863],{"class":5603},[5555,16148,16149],{"class":5557,"line":6040},[5555,16150,12488],{"class":5603},[5555,16152,16153,16155,16157,16159,16161,16163,16165,16167],{"class":5557,"line":6059},[5555,16154,6062],{"class":5616},[5555,16156,5620],{"class":5603},[5555,16158,5623],{"class":5616},[5555,16160,5626],{"class":5603},[5555,16162,5596],{"class":5595},[5555,16164,5631],{"class":5603},[5555,16166,6476],{"class":5634},[5555,16168,5779],{"class":5603},[5555,16170,16171,16173,16175,16178,16180,16182,16184,16186,16188,16191,16193,16195,16197,16199,16201,16203],{"class":5557,"line":6083},[5555,16172,6062],{"class":5616},[5555,16174,5620],{"class":5603},[5555,16176,16177],{"class":5599},"copy_n",[5555,16179,5792],{"class":5603},[5555,16181,16083],{"class":5634},[5555,16183,5428],{"class":5603},[5555,16185,5799],{"class":5599},[5555,16187,5802],{"class":5603},[5555,16189,16190],{"class":5641},"100",[5555,16192,5645],{"class":5603},[5555,16194,6359],{"class":5616},[5555,16196,5620],{"class":5603},[5555,16198,5823],{"class":5599},[5555,16200,5792],{"class":5603},[5555,16202,6476],{"class":5634},[5555,16204,11045],{"class":5603},[5555,16206,16207],{"class":5557,"line":6105},[5555,16208,12488],{"class":5603},[5555,16210,16211,16213,16216,16218,16220,16222,16224],{"class":5557,"line":6110},[5555,16212,12584],{"class":5595},[5555,16214,16215],{"class":5634}," end",[5555,16217,6348],{"class":5603},[5555,16219,15968],{"class":5616},[5555,16221,5620],{"class":5603},[5555,16223,15973],{"class":5599},[5555,16225,8210],{"class":5603},[5555,16227,16228,16230,16233,16235,16238,16240,16243,16246,16248,16251,16254],{"class":5557,"line":6121},[5555,16229,12584],{"class":5595},[5555,16231,16232],{"class":5634}," duration",[5555,16234,6348],{"class":5603},[5555,16236,16237],{"class":5599},"duration_cast",[5555,16239,5626],{"class":5603},[5555,16241,16242],{"class":5616},"microseconds",[5555,16244,16245],{"class":5603},">(",[5555,16247,5809],{"class":5634},[5555,16249,16250],{"class":5603}," - ",[5555,16252,16253],{"class":5634},"start",[5555,16255,5915],{"class":5603},[5555,16257,16258],{"class":5557,"line":7404},[5555,16259,12488],{"class":5603},[5555,16261,16262,16264,16266,16268,16270,16273,16275,16278,16280,16282,16284,16287,16289,16291],{"class":5557,"line":7409},[5555,16263,6062],{"class":5616},[5555,16265,5620],{"class":5603},[5555,16267,6067],{"class":5634},[5555,16269,6070],{"class":5603},[5555,16271,16272],{"class":5565},"\"STL Eager: \"",[5555,16274,6070],{"class":5603},[5555,16276,16277],{"class":5634},"duration",[5555,16279,5428],{"class":5603},[5555,16281,12723],{"class":5599},[5555,16283,12474],{"class":5603},[5555,16285,16286],{"class":5565},"\" μs",[5555,16288,6098],{"class":6097},[5555,16290,6094],{"class":5565},[5555,16292,5779],{"class":5603},[5555,16294,16295,16297,16299,16301,16303,16306,16308,16310,16312,16314,16316,16318,16320,16322],{"class":5557,"line":7414},[5555,16296,6062],{"class":5616},[5555,16298,5620],{"class":5603},[5555,16300,6067],{"class":5634},[5555,16302,6070],{"class":5603},[5555,16304,16305],{"class":5565},"\"  Result size: \"",[5555,16307,6070],{"class":5603},[5555,16309,6476],{"class":5634},[5555,16311,5428],{"class":5603},[5555,16313,5889],{"class":5599},[5555,16315,12474],{"class":5603},[5555,16317,6094],{"class":5565},[5555,16319,6098],{"class":6097},[5555,16321,6094],{"class":5565},[5555,16323,5779],{"class":5603},[5555,16325,16326],{"class":5557,"line":7420},[5555,16327,12543],{"class":5603},[5555,16329,16330],{"class":5557,"line":7426},[5555,16331,5751],{"class":5603},[5555,16333,16334],{"class":5557,"line":7432},[5555,16335,16336],{"class":5757},"    \u002F\u002F === Ranges Lazy ===\n",[5555,16338,16339],{"class":5557,"line":7437},[5555,16340,12361],{"class":5603},[5555,16342,16343,16345,16347,16349,16351,16353,16355],{"class":5557,"line":7442},[5555,16344,12584],{"class":5595},[5555,16346,15963],{"class":5634},[5555,16348,6348],{"class":5603},[5555,16350,15968],{"class":5616},[5555,16352,5620],{"class":5603},[5555,16354,15973],{"class":5599},[5555,16356,8210],{"class":5603},[5555,16358,16359],{"class":5557,"line":7448},[5555,16360,12488],{"class":5603},[5555,16362,16363,16365,16367,16369],{"class":5557,"line":7454},[5555,16364,12584],{"class":5595},[5555,16366,8202],{"class":5634},[5555,16368,6348],{"class":5603},[5555,16370,16371],{"class":5634},"data\n",[5555,16373,16374,16376,16378,16380,16382,16384,16386,16388,16390,16392,16394,16396,16398,16400,16402,16404,16406],{"class":5557,"line":7460},[5555,16375,12595],{"class":5603},[5555,16377,6359],{"class":5616},[5555,16379,5620],{"class":5603},[5555,16381,5434],{"class":5616},[5555,16383,5620],{"class":5603},[5555,16385,6368],{"class":5599},[5555,16387,6371],{"class":5603},[5555,16389,5596],{"class":5595},[5555,16391,5841],{"class":5634},[5555,16393,5844],{"class":5603},[5555,16395,5847],{"class":5561},[5555,16397,5841],{"class":5634},[5555,16399,5852],{"class":5603},[5555,16401,5648],{"class":5641},[5555,16403,5857],{"class":5603},[5555,16405,5860],{"class":5641},[5555,16407,6392],{"class":5603},[5555,16409,16410,16412,16414,16416,16418,16420,16422,16424,16426,16428,16430,16432,16434,16436,16438],{"class":5557,"line":7466},[5555,16411,12595],{"class":5603},[5555,16413,6359],{"class":5616},[5555,16415,5620],{"class":5603},[5555,16417,5434],{"class":5616},[5555,16419,5620],{"class":5603},[5555,16421,5936],{"class":5599},[5555,16423,6371],{"class":5603},[5555,16425,5596],{"class":5595},[5555,16427,5841],{"class":5634},[5555,16429,5844],{"class":5603},[5555,16431,5847],{"class":5561},[5555,16433,5841],{"class":5634},[5555,16435,5982],{"class":5603},[5555,16437,5648],{"class":5641},[5555,16439,6392],{"class":5603},[5555,16441,16442,16444,16446,16448,16450,16452,16454,16456,16458],{"class":5557,"line":7472},[5555,16443,12595],{"class":5603},[5555,16445,6359],{"class":5616},[5555,16447,5620],{"class":5603},[5555,16449,5434],{"class":5616},[5555,16451,5620],{"class":5603},[5555,16453,6407],{"class":5599},[5555,16455,5792],{"class":5603},[5555,16457,16190],{"class":5641},[5555,16459,5915],{"class":5603},[5555,16461,16462],{"class":5557,"line":7477},[5555,16463,12488],{"class":5603},[5555,16465,16466,16468,16470,16472,16474,16476,16478,16480,16482,16484,16486,16488,16490,16492,16494,16496],{"class":5557,"line":7483},[5555,16467,6062],{"class":5616},[5555,16469,5620],{"class":5603},[5555,16471,5623],{"class":5616},[5555,16473,5626],{"class":5603},[5555,16475,5596],{"class":5595},[5555,16477,5631],{"class":5603},[5555,16479,6476],{"class":5599},[5555,16481,5792],{"class":5603},[5555,16483,12708],{"class":5634},[5555,16485,5428],{"class":5603},[5555,16487,5799],{"class":5599},[5555,16489,5802],{"class":5603},[5555,16491,12708],{"class":5634},[5555,16493,5428],{"class":5603},[5555,16495,5809],{"class":5599},[5555,16497,6026],{"class":5603},[5555,16499,16500],{"class":5557,"line":7489},[5555,16501,12488],{"class":5603},[5555,16503,16504,16506,16508,16510,16512,16514,16516],{"class":5557,"line":7495},[5555,16505,12584],{"class":5595},[5555,16507,16215],{"class":5634},[5555,16509,6348],{"class":5603},[5555,16511,15968],{"class":5616},[5555,16513,5620],{"class":5603},[5555,16515,15973],{"class":5599},[5555,16517,8210],{"class":5603},[5555,16519,16520,16522,16524,16526,16528,16530,16532,16534,16536,16538,16540],{"class":5557,"line":7501},[5555,16521,12584],{"class":5595},[5555,16523,16232],{"class":5634},[5555,16525,6348],{"class":5603},[5555,16527,16237],{"class":5599},[5555,16529,5626],{"class":5603},[5555,16531,16242],{"class":5616},[5555,16533,16245],{"class":5603},[5555,16535,5809],{"class":5634},[5555,16537,16250],{"class":5603},[5555,16539,16253],{"class":5634},[5555,16541,5915],{"class":5603},[5555,16543,16544],{"class":5557,"line":7506},[5555,16545,12488],{"class":5603},[5555,16547,16548,16550,16552,16554,16556,16559,16561,16563,16565,16567,16569,16571,16573,16575],{"class":5557,"line":7512},[5555,16549,6062],{"class":5616},[5555,16551,5620],{"class":5603},[5555,16553,6067],{"class":5634},[5555,16555,6070],{"class":5603},[5555,16557,16558],{"class":5565},"\"Ranges Lazy: \"",[5555,16560,6070],{"class":5603},[5555,16562,16277],{"class":5634},[5555,16564,5428],{"class":5603},[5555,16566,12723],{"class":5599},[5555,16568,12474],{"class":5603},[5555,16570,16286],{"class":5565},[5555,16572,6098],{"class":6097},[5555,16574,6094],{"class":5565},[5555,16576,5779],{"class":5603},[5555,16578,16579,16581,16583,16585,16587,16589,16591,16593,16595,16597,16599,16601,16603,16605],{"class":5557,"line":7518},[5555,16580,6062],{"class":5616},[5555,16582,5620],{"class":5603},[5555,16584,6067],{"class":5634},[5555,16586,6070],{"class":5603},[5555,16588,16305],{"class":5565},[5555,16590,6070],{"class":5603},[5555,16592,6476],{"class":5634},[5555,16594,5428],{"class":5603},[5555,16596,5889],{"class":5599},[5555,16598,12474],{"class":5603},[5555,16600,6094],{"class":5565},[5555,16602,6098],{"class":6097},[5555,16604,6094],{"class":5565},[5555,16606,5779],{"class":5603},[5555,16608,16609],{"class":5557,"line":7524},[5555,16610,12543],{"class":5603},[5555,16612,16613],{"class":5557,"line":7530},[5555,16614,5751],{"class":5603},[5555,16616,16617,16619,16621],{"class":5557,"line":7535},[5555,16618,6113],{"class":5561},[5555,16620,6116],{"class":5641},[5555,16622,5779],{"class":5603},[5555,16624,16625],{"class":5557,"line":7540},[5555,16626,6124],{"class":5603},[6587,16628,16630,16634,16638,16642,16645],{"title":16629},".\u002FPerformanceBenchmark",[6591,16631,16633],{"className":16632},[5557],"STL Eager: 15234 μs",[6591,16635,16637],{"className":16636},[5557],"  Result size: 100",[6591,16639,16641],{"className":16640},[5557],"Ranges Lazy: 8 μs",[6591,16643,16637],{"className":16644},[5557],[6591,16646,16648],{"className":16647},[5557],[5555,16649,16653],{"className":16650},[16651,16652],"text-green-400","font-bold","← Ranges у ~1900 разів швидше!",[6700,16655,16656,16661,16666,16684,16689],{},[5532,16657,16658],{},[5413,16659,16660],{},"Чому така різниця?",[5532,16662,16663],{},[5413,16664,16665],{},"STL Eager:",[5406,16667,16668,16674,16678,16681],{},[5409,16669,16670,16671,16673],{},"Виділяє пам'ять для ",[5425,16672,15996],{}," (500K елементів)",[5409,16675,16670,16676,16673],{},[5425,16677,16083],{},[5409,16679,16680],{},"Обробляє ВСІ 500K парних чисел",[5409,16682,16683],{},"Потім бере лише 100",[5532,16685,16686],{},[5413,16687,16688],{},"Ranges Lazy:",[5406,16690,16691,16694,16697,16700],{},[5409,16692,16693],{},"НЕ виділяє проміжних контейнерів",[5409,16695,16696],{},"Обробляє лише перші 100 парних чисел",[5409,16698,16699],{},"Трансформує їх on-the-fly",[5409,16701,16702],{},"Зупиняється відразу після 100-го",[5539,16704,16706],{"id":16705},"коли-ranges-повільніші","Коли ranges повільніші?",[5532,16708,16709],{},"Ranges НЕ завжди швидші. Є сценарії, де класичний STL виграє:",[5544,16711,16714],{"className":5546,"code":16712,"filename":16713,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Cranges>\n#include \u003Calgorithm>\n\nint main()\n{\n    std::vector\u003Cint> data = {5, 2, 8, 1, 9, 3, 7, 4, 6};\n    \n    \u002F\u002F ❌ ПОВІЛЬНО: багаторазова ітерація view\n    auto view = data | std::views::filter([](int n) { return n > 3; });\n    \n    \u002F\u002F Кожен виклик ranges::distance проходить view заново!\n    for (int i = 0; i \u003C 1000; ++i)\n    {\n        auto size = std::ranges::distance(view);  \u002F\u002F O(n) кожен раз\n    }\n    \n    \u002F\u002F ✅ ШВИДКО: матеріалізувати в вектор\n    std::vector\u003Cint> materialized(view.begin(), view.end());\n    \n    \u002F\u002F Тепер size() — O(1)\n    for (int i = 0; i \u003C 1000; ++i)\n    {\n        auto size = materialized.size();\n    }\n    \n    return 0;\n}\n","RangesPitfalls.cpp",[5425,16715,16716,16722,16728,16734,16740,16744,16752,16756,16810,16814,16819,16859,16863,16868,16900,16904,16932,16936,16940,16945,16980,16984,16989,17017,17021,17037,17041,17045,17053],{"__ignoreMap":5551},[5555,16717,16718,16720],{"class":5557,"line":5558},[5555,16719,5562],{"class":5561},[5555,16721,5566],{"class":5565},[5555,16723,16724,16726],{"class":5557,"line":5569},[5555,16725,5562],{"class":5561},[5555,16727,5574],{"class":5565},[5555,16729,16730,16732],{"class":5557,"line":5577},[5555,16731,5562],{"class":5561},[5555,16733,6206],{"class":5565},[5555,16735,16736,16738],{"class":5557,"line":5585},[5555,16737,5562],{"class":5561},[5555,16739,5582],{"class":5565},[5555,16741,16742],{"class":5557,"line":5592},[5555,16743,5589],{"emptyLinePlaceholder":5588},[5555,16745,16746,16748,16750],{"class":5557,"line":5607},[5555,16747,5596],{"class":5595},[5555,16749,5600],{"class":5599},[5555,16751,5604],{"class":5603},[5555,16753,16754],{"class":5557,"line":5613},[5555,16755,5610],{"class":5603},[5555,16757,16758,16760,16762,16764,16766,16768,16770,16772,16774,16776,16778,16780,16782,16784,16786,16788,16790,16792,16794,16796,16798,16800,16802,16804,16806,16808],{"class":5557,"line":5694},[5555,16759,5617],{"class":5616},[5555,16761,5620],{"class":5603},[5555,16763,5623],{"class":5616},[5555,16765,5626],{"class":5603},[5555,16767,5596],{"class":5595},[5555,16769,5631],{"class":5603},[5555,16771,14569],{"class":5634},[5555,16773,5638],{"class":5603},[5555,16775,5663],{"class":5641},[5555,16777,5645],{"class":5603},[5555,16779,5648],{"class":5641},[5555,16781,5645],{"class":5603},[5555,16783,5678],{"class":5641},[5555,16785,5645],{"class":5603},[5555,16787,5642],{"class":5641},[5555,16789,5645],{"class":5603},[5555,16791,5683],{"class":5641},[5555,16793,5645],{"class":5603},[5555,16795,5653],{"class":5641},[5555,16797,5645],{"class":5603},[5555,16799,5673],{"class":5641},[5555,16801,5645],{"class":5603},[5555,16803,5658],{"class":5641},[5555,16805,5645],{"class":5603},[5555,16807,5668],{"class":5641},[5555,16809,5745],{"class":5603},[5555,16811,16812],{"class":5557,"line":5748},[5555,16813,5751],{"class":5603},[5555,16815,16816],{"class":5557,"line":5754},[5555,16817,16818],{"class":5757},"    \u002F\u002F ❌ ПОВІЛЬНО: багаторазова ітерація view\n",[5555,16820,16821,16823,16825,16827,16829,16831,16833,16835,16837,16839,16841,16843,16845,16847,16849,16851,16853,16855,16857],{"class":5557,"line":5761},[5555,16822,6342],{"class":5595},[5555,16824,8202],{"class":5634},[5555,16826,6348],{"class":5603},[5555,16828,14569],{"class":5634},[5555,16830,7853],{"class":5603},[5555,16832,6359],{"class":5616},[5555,16834,5620],{"class":5603},[5555,16836,5434],{"class":5616},[5555,16838,5620],{"class":5603},[5555,16840,6368],{"class":5599},[5555,16842,6371],{"class":5603},[5555,16844,5596],{"class":5595},[5555,16846,5841],{"class":5634},[5555,16848,5844],{"class":5603},[5555,16850,5847],{"class":5561},[5555,16852,5841],{"class":5634},[5555,16854,8179],{"class":5603},[5555,16856,5653],{"class":5641},[5555,16858,5863],{"class":5603},[5555,16860,16861],{"class":5557,"line":5782},[5555,16862,5751],{"class":5603},[5555,16864,16865],{"class":5557,"line":5815},[5555,16866,16867],{"class":5757},"    \u002F\u002F Кожен виклик ranges::distance проходить view заново!\n",[5555,16869,16870,16872,16874,16876,16878,16880,16882,16885,16887,16890,16893,16896,16898],{"class":5557,"line":5833},[5555,16871,6043],{"class":5561},[5555,16873,5439],{"class":5603},[5555,16875,5596],{"class":5595},[5555,16877,15248],{"class":5634},[5555,16879,6348],{"class":5603},[5555,16881,5860],{"class":5641},[5555,16883,16884],{"class":5603},"; ",[5555,16886,15328],{"class":5634},[5555,16888,16889],{"class":5603}," \u003C ",[5555,16891,16892],{"class":5641},"1000",[5555,16894,16895],{"class":5603},"; ++",[5555,16897,15328],{"class":5634},[5555,16899,5897],{"class":5603},[5555,16901,16902],{"class":5557,"line":5866},[5555,16903,12361],{"class":5603},[5555,16905,16906,16908,16911,16913,16915,16917,16919,16921,16923,16925,16927,16929],{"class":5557,"line":5871},[5555,16907,12584],{"class":5595},[5555,16909,16910],{"class":5634}," size",[5555,16912,6348],{"class":5603},[5555,16914,6359],{"class":5616},[5555,16916,5620],{"class":5603},[5555,16918,6499],{"class":5616},[5555,16920,5620],{"class":5603},[5555,16922,14742],{"class":5599},[5555,16924,5792],{"class":5603},[5555,16926,12708],{"class":5634},[5555,16928,9814],{"class":5603},[5555,16930,16931],{"class":5757},"  \u002F\u002F O(n) кожен раз\n",[5555,16933,16934],{"class":5557,"line":5877},[5555,16935,12543],{"class":5603},[5555,16937,16938],{"class":5557,"line":5900},[5555,16939,5751],{"class":5603},[5555,16941,16942],{"class":5557,"line":5918},[5555,16943,16944],{"class":5757},"    \u002F\u002F ✅ ШВИДКО: матеріалізувати в вектор\n",[5555,16946,16947,16949,16951,16953,16955,16957,16959,16962,16964,16966,16968,16970,16972,16974,16976,16978],{"class":5557,"line":5923},[5555,16948,5617],{"class":5616},[5555,16950,5620],{"class":5603},[5555,16952,5623],{"class":5616},[5555,16954,5626],{"class":5603},[5555,16956,5596],{"class":5595},[5555,16958,5631],{"class":5603},[5555,16960,16961],{"class":5599},"materialized",[5555,16963,5792],{"class":5603},[5555,16965,12708],{"class":5634},[5555,16967,5428],{"class":5603},[5555,16969,5799],{"class":5599},[5555,16971,5802],{"class":5603},[5555,16973,12708],{"class":5634},[5555,16975,5428],{"class":5603},[5555,16977,5809],{"class":5599},[5555,16979,6026],{"class":5603},[5555,16981,16982],{"class":5557,"line":5929},[5555,16983,5751],{"class":5603},[5555,16985,16986],{"class":5557,"line":5966},[5555,16987,16988],{"class":5757},"    \u002F\u002F Тепер size() — O(1)\n",[5555,16990,16991,16993,16995,16997,16999,17001,17003,17005,17007,17009,17011,17013,17015],{"class":5557,"line":5989},[5555,16992,6043],{"class":5561},[5555,16994,5439],{"class":5603},[5555,16996,5596],{"class":5595},[5555,16998,15248],{"class":5634},[5555,17000,6348],{"class":5603},[5555,17002,5860],{"class":5641},[5555,17004,16884],{"class":5603},[5555,17006,15328],{"class":5634},[5555,17008,16889],{"class":5603},[5555,17010,16892],{"class":5641},[5555,17012,16895],{"class":5603},[5555,17014,15328],{"class":5634},[5555,17016,5897],{"class":5603},[5555,17018,17019],{"class":5557,"line":5994},[5555,17020,12361],{"class":5603},[5555,17022,17023,17025,17027,17029,17031,17033,17035],{"class":5557,"line":6000},[5555,17024,12584],{"class":5595},[5555,17026,16910],{"class":5634},[5555,17028,6348],{"class":5603},[5555,17030,16961],{"class":5634},[5555,17032,5428],{"class":5603},[5555,17034,5889],{"class":5599},[5555,17036,8210],{"class":5603},[5555,17038,17039],{"class":5557,"line":6029},[5555,17040,12543],{"class":5603},[5555,17042,17043],{"class":5557,"line":6034},[5555,17044,5751],{"class":5603},[5555,17046,17047,17049,17051],{"class":5557,"line":6040},[5555,17048,6113],{"class":5561},[5555,17050,6116],{"class":5641},[5555,17052,5779],{"class":5603},[5555,17054,17055],{"class":5557,"line":6059},[5555,17056,6124],{"class":5603},[8081,17058,17059,17077],{},[5532,17060,17061,17064,17065,17068,17069,17072,17073,17076],{},[5413,17062,17063],{},"Правило:"," Якщо потрібно ",[5413,17066,17067],{},"багаторазово ітерувати"," або ",[5413,17070,17071],{},"випадково звертатися"," до елементів, краще ",[5413,17074,17075],{},"матеріалізувати"," view у контейнер:",[5544,17078,17080],{"className":5546,"code":17079,"language":5549,"meta":5551,"style":5551},"\u002F\u002F View для одноразового проходу — чудово\nauto view = data | views::filter(...) | views::transform(...);\nfor (int n : view) { \u002F* ... *\u002F }\n\n\u002F\u002F Багаторазове використання — матеріалізувати\nstd::vector\u003Cint> vec(view.begin(), view.end());\nfor (int i = 0; i \u003C 1000; ++i)\n{\n    for (int n : vec) { \u002F* ... *\u002F }\n}\n",[5425,17081,17082,17087,17117,17141,17145,17150,17184,17212,17216,17236],{"__ignoreMap":5551},[5555,17083,17084],{"class":5557,"line":5558},[5555,17085,17086],{"class":5757},"\u002F\u002F View для одноразового проходу — чудово\n",[5555,17088,17089,17091,17093,17095,17097,17099,17101,17103,17105,17108,17110,17112,17114],{"class":5557,"line":5569},[5555,17090,8105],{"class":5595},[5555,17092,8202],{"class":5634},[5555,17094,6348],{"class":5603},[5555,17096,14569],{"class":5634},[5555,17098,7853],{"class":5603},[5555,17100,5434],{"class":5616},[5555,17102,5620],{"class":5603},[5555,17104,6368],{"class":5599},[5555,17106,17107],{"class":5603},"(...) | ",[5555,17109,5434],{"class":5616},[5555,17111,5620],{"class":5603},[5555,17113,5936],{"class":5599},[5555,17115,17116],{"class":5603},"(...);\n",[5555,17118,17119,17122,17124,17126,17128,17130,17132,17135,17138],{"class":5557,"line":5577},[5555,17120,17121],{"class":5561},"for",[5555,17123,5439],{"class":5603},[5555,17125,5596],{"class":5595},[5555,17127,5841],{"class":5634},[5555,17129,6052],{"class":5603},[5555,17131,12708],{"class":5634},[5555,17133,17134],{"class":5603},") {",[5555,17136,17137],{"class":5757}," \u002F* ... *\u002F",[5555,17139,17140],{"class":5603}," }\n",[5555,17142,17143],{"class":5557,"line":5585},[5555,17144,5589],{"emptyLinePlaceholder":5588},[5555,17146,17147],{"class":5557,"line":5592},[5555,17148,17149],{"class":5757},"\u002F\u002F Багаторазове використання — матеріалізувати\n",[5555,17151,17152,17154,17156,17158,17160,17162,17164,17166,17168,17170,17172,17174,17176,17178,17180,17182],{"class":5557,"line":5607},[5555,17153,6359],{"class":5616},[5555,17155,5620],{"class":5603},[5555,17157,5623],{"class":5616},[5555,17159,5626],{"class":5603},[5555,17161,5596],{"class":5595},[5555,17163,5631],{"class":5603},[5555,17165,6471],{"class":5599},[5555,17167,5792],{"class":5603},[5555,17169,12708],{"class":5616},[5555,17171,5428],{"class":5603},[5555,17173,5799],{"class":5599},[5555,17175,5802],{"class":5603},[5555,17177,12708],{"class":5616},[5555,17179,5428],{"class":5603},[5555,17181,5809],{"class":5599},[5555,17183,6026],{"class":5603},[5555,17185,17186,17188,17190,17192,17194,17196,17198,17200,17202,17204,17206,17208,17210],{"class":5557,"line":5613},[5555,17187,17121],{"class":5561},[5555,17189,5439],{"class":5603},[5555,17191,5596],{"class":5595},[5555,17193,15248],{"class":5634},[5555,17195,6348],{"class":5603},[5555,17197,5860],{"class":5641},[5555,17199,16884],{"class":5603},[5555,17201,15328],{"class":5634},[5555,17203,16889],{"class":5603},[5555,17205,16892],{"class":5641},[5555,17207,16895],{"class":5603},[5555,17209,15328],{"class":5634},[5555,17211,5897],{"class":5603},[5555,17213,17214],{"class":5557,"line":5694},[5555,17215,5610],{"class":5603},[5555,17217,17218,17220,17222,17224,17226,17228,17230,17232,17234],{"class":5557,"line":5748},[5555,17219,6043],{"class":5561},[5555,17221,5439],{"class":5603},[5555,17223,5596],{"class":5595},[5555,17225,5841],{"class":5634},[5555,17227,6052],{"class":5603},[5555,17229,6471],{"class":5634},[5555,17231,17134],{"class":5603},[5555,17233,17137],{"class":5757},[5555,17235,17140],{"class":5603},[5555,17237,17238],{"class":5557,"line":5754},[5555,17239,6124],{"class":5603},[5524,17241],{},[5527,17243,17245],{"id":17244},"обмеження-та-підводні-камені","Обмеження та підводні камені",[5539,17247,17249],{"id":17248},"_1️⃣-висячі-посилання","1️⃣ Висячі посилання",[5544,17251,17254],{"className":5546,"code":17252,"filename":17253,"language":5549,"meta":5550,"style":5551},"#include \u003Cvector>\n#include \u003Cranges>\n\nauto createView()\n{\n    std::vector\u003Cint> local = {1, 2, 3, 4, 5};\n    \n    \u002F\u002F ❌ НЕБЕЗПЕЧНО: local знищується при виході з функції\n    return local | std::views::filter([](int n) { return n > 2; });\n}\n\nint main()\n{\n    auto view = createView();\n    \n    \u002F\u002F ❌ Невизначена поведінка: view посилається на знищений вектор\n    for (int n : view)\n    {\n        \u002F\u002F ...\n    }\n    \n    return 0;\n}\n","DanglingReferences.cpp",[5425,17255,17256,17262,17268,17272,17280,17284,17322,17326,17331,17367,17371,17375,17383,17387,17399,17403,17408,17424,17428,17433,17437,17441,17449],{"__ignoreMap":5551},[5555,17257,17258,17260],{"class":5557,"line":5558},[5555,17259,5562],{"class":5561},[5555,17261,5574],{"class":5565},[5555,17263,17264,17266],{"class":5557,"line":5569},[5555,17265,5562],{"class":5561},[5555,17267,6206],{"class":5565},[5555,17269,17270],{"class":5557,"line":5577},[5555,17271,5589],{"emptyLinePlaceholder":5588},[5555,17273,17274,17276,17278],{"class":5557,"line":5585},[5555,17275,8105],{"class":5595},[5555,17277,8108],{"class":5599},[5555,17279,5604],{"class":5603},[5555,17281,17282],{"class":5557,"line":5592},[5555,17283,5610],{"class":5603},[5555,17285,17286,17288,17290,17292,17294,17296,17298,17300,17302,17304,17306,17308,17310,17312,17314,17316,17318,17320],{"class":5557,"line":5607},[5555,17287,5617],{"class":5616},[5555,17289,5620],{"class":5603},[5555,17291,5623],{"class":5616},[5555,17293,5626],{"class":5603},[5555,17295,5596],{"class":5595},[5555,17297,5631],{"class":5603},[5555,17299,8131],{"class":5634},[5555,17301,5638],{"class":5603},[5555,17303,5642],{"class":5641},[5555,17305,5645],{"class":5603},[5555,17307,5648],{"class":5641},[5555,17309,5645],{"class":5603},[5555,17311,5653],{"class":5641},[5555,17313,5645],{"class":5603},[5555,17315,5658],{"class":5641},[5555,17317,5645],{"class":5603},[5555,17319,5663],{"class":5641},[5555,17321,5745],{"class":5603},[5555,17323,17324],{"class":5557,"line":5613},[5555,17325,5751],{"class":5603},[5555,17327,17328],{"class":5557,"line":5694},[5555,17329,17330],{"class":5757},"    \u002F\u002F ❌ НЕБЕЗПЕЧНО: local знищується при виході з функції\n",[5555,17332,17333,17335,17337,17339,17341,17343,17345,17347,17349,17351,17353,17355,17357,17359,17361,17363,17365],{"class":5557,"line":5748},[5555,17334,6113],{"class":5561},[5555,17336,8152],{"class":5634},[5555,17338,7853],{"class":5603},[5555,17340,6359],{"class":5616},[5555,17342,5620],{"class":5603},[5555,17344,5434],{"class":5616},[5555,17346,5620],{"class":5603},[5555,17348,6368],{"class":5599},[5555,17350,6371],{"class":5603},[5555,17352,5596],{"class":5595},[5555,17354,5841],{"class":5634},[5555,17356,5844],{"class":5603},[5555,17358,5847],{"class":5561},[5555,17360,5841],{"class":5634},[5555,17362,8179],{"class":5603},[5555,17364,5648],{"class":5641},[5555,17366,5863],{"class":5603},[5555,17368,17369],{"class":5557,"line":5754},[5555,17370,6124],{"class":5603},[5555,17372,17373],{"class":5557,"line":5761},[5555,17374,5589],{"emptyLinePlaceholder":5588},[5555,17376,17377,17379,17381],{"class":5557,"line":5782},[5555,17378,5596],{"class":5595},[5555,17380,5600],{"class":5599},[5555,17382,5604],{"class":5603},[5555,17384,17385],{"class":5557,"line":5815},[5555,17386,5610],{"class":5603},[5555,17388,17389,17391,17393,17395,17397],{"class":5557,"line":5833},[5555,17390,6342],{"class":5595},[5555,17392,8202],{"class":5634},[5555,17394,6348],{"class":5603},[5555,17396,8207],{"class":5599},[5555,17398,8210],{"class":5603},[5555,17400,17401],{"class":5557,"line":5866},[5555,17402,5751],{"class":5603},[5555,17404,17405],{"class":5557,"line":5871},[5555,17406,17407],{"class":5757},"    \u002F\u002F ❌ Невизначена поведінка: view посилається на знищений вектор\n",[5555,17409,17410,17412,17414,17416,17418,17420,17422],{"class":5557,"line":5877},[5555,17411,6043],{"class":5561},[5555,17413,5439],{"class":5603},[5555,17415,5596],{"class":5595},[5555,17417,5841],{"class":5634},[5555,17419,6052],{"class":5603},[5555,17421,12708],{"class":5634},[5555,17423,5897],{"class":5603},[5555,17425,17426],{"class":5557,"line":5900},[5555,17427,12361],{"class":5603},[5555,17429,17430],{"class":5557,"line":5918},[5555,17431,17432],{"class":5757},"        \u002F\u002F ...\n",[5555,17434,17435],{"class":5557,"line":5923},[5555,17436,12543],{"class":5603},[5555,17438,17439],{"class":5557,"line":5929},[5555,17440,5751],{"class":5603},[5555,17442,17443,17445,17447],{"class":5557,"line":5966},[5555,17444,6113],{"class":5561},[5555,17446,6116],{"class":5641},[5555,17448,5779],{"class":5603},[5555,17450,17451],{"class":5557,"line":5989},[5555,17452,6124],{"class":5603},[5532,17454,17455,17458],{},[5413,17456,17457],{},"Рішення:"," повертайте контейнер або приймайте range як параметр:",[5544,17460,17462],{"className":5546,"code":17461,"language":5549,"meta":5551,"style":5551},"\u002F\u002F ✅ Повертаємо контейнер\nstd::vector\u003Cint> createVector()\n{\n    std::vector\u003Cint> local = {1, 2, 3, 4, 5};\n    return local | std::views::filter([](int n) { return n > 2; })\n                 | std::ranges::to\u003Cstd::vector>();  \u002F\u002F C++23\n}\n\n\u002F\u002F ✅ Приймаємо range як параметр\nauto processRange(std::ranges::input_range auto&& range)\n{\n    return range | std::views::transform([](int n) { return n * 2; });\n}\n",[5425,17463,17464,17469,17488,17492,17530,17566,17596,17600,17604,17609,17634,17638,17674],{"__ignoreMap":5551},[5555,17465,17466],{"class":5557,"line":5558},[5555,17467,17468],{"class":5757},"\u002F\u002F ✅ Повертаємо контейнер\n",[5555,17470,17471,17473,17475,17477,17479,17481,17483,17486],{"class":5557,"line":5569},[5555,17472,6359],{"class":5616},[5555,17474,5620],{"class":5603},[5555,17476,5623],{"class":5616},[5555,17478,5626],{"class":5603},[5555,17480,5596],{"class":5595},[5555,17482,5631],{"class":5603},[5555,17484,17485],{"class":5599},"createVector",[5555,17487,5604],{"class":5603},[5555,17489,17490],{"class":5557,"line":5577},[5555,17491,5610],{"class":5603},[5555,17493,17494,17496,17498,17500,17502,17504,17506,17508,17510,17512,17514,17516,17518,17520,17522,17524,17526,17528],{"class":5557,"line":5585},[5555,17495,5617],{"class":5616},[5555,17497,5620],{"class":5603},[5555,17499,5623],{"class":5616},[5555,17501,5626],{"class":5603},[5555,17503,5596],{"class":5595},[5555,17505,5631],{"class":5603},[5555,17507,8131],{"class":5634},[5555,17509,5638],{"class":5603},[5555,17511,5642],{"class":5641},[5555,17513,5645],{"class":5603},[5555,17515,5648],{"class":5641},[5555,17517,5645],{"class":5603},[5555,17519,5653],{"class":5641},[5555,17521,5645],{"class":5603},[5555,17523,5658],{"class":5641},[5555,17525,5645],{"class":5603},[5555,17527,5663],{"class":5641},[5555,17529,5745],{"class":5603},[5555,17531,17532,17534,17536,17538,17540,17542,17544,17546,17548,17550,17552,17554,17556,17558,17560,17562,17564],{"class":5557,"line":5592},[5555,17533,6113],{"class":5561},[5555,17535,8152],{"class":5634},[5555,17537,7853],{"class":5603},[5555,17539,6359],{"class":5616},[5555,17541,5620],{"class":5603},[5555,17543,5434],{"class":5616},[5555,17545,5620],{"class":5603},[5555,17547,6368],{"class":5599},[5555,17549,6371],{"class":5603},[5555,17551,5596],{"class":5595},[5555,17553,5841],{"class":5634},[5555,17555,5844],{"class":5603},[5555,17557,5847],{"class":5561},[5555,17559,5841],{"class":5634},[5555,17561,8179],{"class":5603},[5555,17563,5648],{"class":5641},[5555,17565,6392],{"class":5603},[5555,17567,17568,17571,17573,17575,17577,17579,17582,17584,17586,17588,17590,17593],{"class":5557,"line":5607},[5555,17569,17570],{"class":5603},"                 | ",[5555,17572,6359],{"class":5616},[5555,17574,5620],{"class":5603},[5555,17576,6499],{"class":5616},[5555,17578,5620],{"class":5603},[5555,17580,17581],{"class":5599},"to",[5555,17583,5626],{"class":5603},[5555,17585,6359],{"class":5616},[5555,17587,5620],{"class":5603},[5555,17589,5623],{"class":5616},[5555,17591,17592],{"class":5603},">();",[5555,17594,17595],{"class":5757},"  \u002F\u002F C++23\n",[5555,17597,17598],{"class":5557,"line":5613},[5555,17599,6124],{"class":5603},[5555,17601,17602],{"class":5557,"line":5694},[5555,17603,5589],{"emptyLinePlaceholder":5588},[5555,17605,17606],{"class":5557,"line":5748},[5555,17607,17608],{"class":5757},"\u002F\u002F ✅ Приймаємо range як параметр\n",[5555,17610,17611,17613,17615,17617,17619,17621,17623,17625,17627,17630,17632],{"class":5557,"line":5754},[5555,17612,8105],{"class":5595},[5555,17614,10949],{"class":5599},[5555,17616,5792],{"class":5603},[5555,17618,6359],{"class":5616},[5555,17620,5620],{"class":5603},[5555,17622,6499],{"class":5616},[5555,17624,5620],{"class":5603},[5555,17626,7579],{"class":5616},[5555,17628,17629],{"class":5595}," auto&&",[5555,17631,8514],{"class":5634},[5555,17633,5897],{"class":5603},[5555,17635,17636],{"class":5557,"line":5761},[5555,17637,5610],{"class":5603},[5555,17639,17640,17642,17644,17646,17648,17650,17652,17654,17656,17658,17660,17662,17664,17666,17668,17670,17672],{"class":5557,"line":5782},[5555,17641,6113],{"class":5561},[5555,17643,8514],{"class":5634},[5555,17645,7853],{"class":5603},[5555,17647,6359],{"class":5616},[5555,17649,5620],{"class":5603},[5555,17651,5434],{"class":5616},[5555,17653,5620],{"class":5603},[5555,17655,5936],{"class":5599},[5555,17657,6371],{"class":5603},[5555,17659,5596],{"class":5595},[5555,17661,5841],{"class":5634},[5555,17663,5844],{"class":5603},[5555,17665,5847],{"class":5561},[5555,17667,5841],{"class":5634},[5555,17669,5982],{"class":5603},[5555,17671,5648],{"class":5641},[5555,17673,5863],{"class":5603},[5555,17675,17676],{"class":5557,"line":5815},[5555,17677,6124],{"class":5603},[5539,17679,17681],{"id":17680},"_2️⃣-інвалідація-при-модифікації","2️⃣ Інвалідація при модифікації",[5544,17683,17686],{"className":5546,"code":17684,"filename":17685,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Cranges>\n\nint main()\n{\n    std::vector\u003Cint> data = {1, 2, 3, 4, 5};\n    \n    auto view = data | std::views::filter([](int n) { return n > 2; });\n    \n    \u002F\u002F Ітеруємо view\n    for (int n : view)\n    {\n        std::cout \u003C\u003C n \u003C\u003C \" \";\n        \n        \u002F\u002F ❌ НЕБЕЗПЕЧНО: модифікація під час ітерації\n        if (n == 3)\n            data.push_back(10);  \u002F\u002F Може викликати реалокацію!\n    }\n    \n    return 0;\n}\n","InvalidationOnModification.cpp",[5425,17687,17688,17694,17700,17706,17710,17718,17722,17760,17764,17804,17808,17813,17829,17833,17851,17855,17860,17874,17892,17896,17900,17908],{"__ignoreMap":5551},[5555,17689,17690,17692],{"class":5557,"line":5558},[5555,17691,5562],{"class":5561},[5555,17693,5566],{"class":5565},[5555,17695,17696,17698],{"class":5557,"line":5569},[5555,17697,5562],{"class":5561},[5555,17699,5574],{"class":5565},[5555,17701,17702,17704],{"class":5557,"line":5577},[5555,17703,5562],{"class":5561},[5555,17705,6206],{"class":5565},[5555,17707,17708],{"class":5557,"line":5585},[5555,17709,5589],{"emptyLinePlaceholder":5588},[5555,17711,17712,17714,17716],{"class":5557,"line":5592},[5555,17713,5596],{"class":5595},[5555,17715,5600],{"class":5599},[5555,17717,5604],{"class":5603},[5555,17719,17720],{"class":5557,"line":5607},[5555,17721,5610],{"class":5603},[5555,17723,17724,17726,17728,17730,17732,17734,17736,17738,17740,17742,17744,17746,17748,17750,17752,17754,17756,17758],{"class":5557,"line":5613},[5555,17725,5617],{"class":5616},[5555,17727,5620],{"class":5603},[5555,17729,5623],{"class":5616},[5555,17731,5626],{"class":5603},[5555,17733,5596],{"class":5595},[5555,17735,5631],{"class":5603},[5555,17737,14569],{"class":5634},[5555,17739,5638],{"class":5603},[5555,17741,5642],{"class":5641},[5555,17743,5645],{"class":5603},[5555,17745,5648],{"class":5641},[5555,17747,5645],{"class":5603},[5555,17749,5653],{"class":5641},[5555,17751,5645],{"class":5603},[5555,17753,5658],{"class":5641},[5555,17755,5645],{"class":5603},[5555,17757,5663],{"class":5641},[5555,17759,5745],{"class":5603},[5555,17761,17762],{"class":5557,"line":5694},[5555,17763,5751],{"class":5603},[5555,17765,17766,17768,17770,17772,17774,17776,17778,17780,17782,17784,17786,17788,17790,17792,17794,17796,17798,17800,17802],{"class":5557,"line":5748},[5555,17767,6342],{"class":5595},[5555,17769,8202],{"class":5634},[5555,17771,6348],{"class":5603},[5555,17773,14569],{"class":5634},[5555,17775,7853],{"class":5603},[5555,17777,6359],{"class":5616},[5555,17779,5620],{"class":5603},[5555,17781,5434],{"class":5616},[5555,17783,5620],{"class":5603},[5555,17785,6368],{"class":5599},[5555,17787,6371],{"class":5603},[5555,17789,5596],{"class":5595},[5555,17791,5841],{"class":5634},[5555,17793,5844],{"class":5603},[5555,17795,5847],{"class":5561},[5555,17797,5841],{"class":5634},[5555,17799,8179],{"class":5603},[5555,17801,5648],{"class":5641},[5555,17803,5863],{"class":5603},[5555,17805,17806],{"class":5557,"line":5754},[5555,17807,5751],{"class":5603},[5555,17809,17810],{"class":5557,"line":5761},[5555,17811,17812],{"class":5757},"    \u002F\u002F Ітеруємо view\n",[5555,17814,17815,17817,17819,17821,17823,17825,17827],{"class":5557,"line":5782},[5555,17816,6043],{"class":5561},[5555,17818,5439],{"class":5603},[5555,17820,5596],{"class":5595},[5555,17822,5841],{"class":5634},[5555,17824,6052],{"class":5603},[5555,17826,12708],{"class":5634},[5555,17828,5897],{"class":5603},[5555,17830,17831],{"class":5557,"line":5815},[5555,17832,12361],{"class":5603},[5555,17834,17835,17837,17839,17841,17843,17845,17847,17849],{"class":5557,"line":5833},[5555,17836,6062],{"class":5616},[5555,17838,5620],{"class":5603},[5555,17840,6067],{"class":5634},[5555,17842,6070],{"class":5603},[5555,17844,6073],{"class":5634},[5555,17846,6070],{"class":5603},[5555,17848,6078],{"class":5565},[5555,17850,5779],{"class":5603},[5555,17852,17853],{"class":5557,"line":5866},[5555,17854,12488],{"class":5603},[5555,17856,17857],{"class":5557,"line":5871},[5555,17858,17859],{"class":5757},"        \u002F\u002F ❌ НЕБЕЗПЕЧНО: модифікація під час ітерації\n",[5555,17861,17862,17864,17866,17868,17870,17872],{"class":5557,"line":5877},[5555,17863,14340],{"class":5561},[5555,17865,5439],{"class":5603},[5555,17867,6073],{"class":5634},[5555,17869,5857],{"class":5603},[5555,17871,5653],{"class":5641},[5555,17873,5897],{"class":5603},[5555,17875,17876,17879,17881,17883,17885,17887,17889],{"class":5557,"line":5900},[5555,17877,17878],{"class":5634},"            data",[5555,17880,5428],{"class":5603},[5555,17882,7975],{"class":5599},[5555,17884,5792],{"class":5603},[5555,17886,5688],{"class":5641},[5555,17888,9814],{"class":5603},[5555,17890,17891],{"class":5757},"  \u002F\u002F Може викликати реалокацію!\n",[5555,17893,17894],{"class":5557,"line":5918},[5555,17895,12543],{"class":5603},[5555,17897,17898],{"class":5557,"line":5923},[5555,17899,5751],{"class":5603},[5555,17901,17902,17904,17906],{"class":5557,"line":5929},[5555,17903,6113],{"class":5561},[5555,17905,6116],{"class":5641},[5555,17907,5779],{"class":5603},[5555,17909,17910],{"class":5557,"line":5966},[5555,17911,6124],{"class":5603},[5539,17913,17915],{"id":17914},"_3️⃣-відсутність-random-access","3️⃣ Відсутність random access",[5544,17917,17920],{"className":5546,"code":17918,"filename":17919,"language":5549,"meta":5550,"style":5551},"#include \u003Cvector>\n#include \u003Cranges>\n\nint main()\n{\n    std::vector\u003Cint> data = {1, 2, 3, 4, 5};\n    \n    auto view = data | std::views::filter([](int n) { return n > 2; });\n    \n    \u002F\u002F ❌ Помилка компіляції: filter не підтримує random access\n    \u002F\u002F auto third = view[2];\n    \n    \u002F\u002F ✅ Потрібна ітерація\n    auto it = view.begin();\n    std::advance(it, 2);\n    auto third = *it;\n    \n    return 0;\n}\n","NoRandomAccess.cpp",[5425,17921,17922,17928,17934,17938,17946,17950,17988,17992,18032,18036,18041,18046,18050,18055,18071,18090,18104,18108,18116],{"__ignoreMap":5551},[5555,17923,17924,17926],{"class":5557,"line":5558},[5555,17925,5562],{"class":5561},[5555,17927,5574],{"class":5565},[5555,17929,17930,17932],{"class":5557,"line":5569},[5555,17931,5562],{"class":5561},[5555,17933,6206],{"class":5565},[5555,17935,17936],{"class":5557,"line":5577},[5555,17937,5589],{"emptyLinePlaceholder":5588},[5555,17939,17940,17942,17944],{"class":5557,"line":5585},[5555,17941,5596],{"class":5595},[5555,17943,5600],{"class":5599},[5555,17945,5604],{"class":5603},[5555,17947,17948],{"class":5557,"line":5592},[5555,17949,5610],{"class":5603},[5555,17951,17952,17954,17956,17958,17960,17962,17964,17966,17968,17970,17972,17974,17976,17978,17980,17982,17984,17986],{"class":5557,"line":5607},[5555,17953,5617],{"class":5616},[5555,17955,5620],{"class":5603},[5555,17957,5623],{"class":5616},[5555,17959,5626],{"class":5603},[5555,17961,5596],{"class":5595},[5555,17963,5631],{"class":5603},[5555,17965,14569],{"class":5634},[5555,17967,5638],{"class":5603},[5555,17969,5642],{"class":5641},[5555,17971,5645],{"class":5603},[5555,17973,5648],{"class":5641},[5555,17975,5645],{"class":5603},[5555,17977,5653],{"class":5641},[5555,17979,5645],{"class":5603},[5555,17981,5658],{"class":5641},[5555,17983,5645],{"class":5603},[5555,17985,5663],{"class":5641},[5555,17987,5745],{"class":5603},[5555,17989,17990],{"class":5557,"line":5613},[5555,17991,5751],{"class":5603},[5555,17993,17994,17996,17998,18000,18002,18004,18006,18008,18010,18012,18014,18016,18018,18020,18022,18024,18026,18028,18030],{"class":5557,"line":5694},[5555,17995,6342],{"class":5595},[5555,17997,8202],{"class":5634},[5555,17999,6348],{"class":5603},[5555,18001,14569],{"class":5634},[5555,18003,7853],{"class":5603},[5555,18005,6359],{"class":5616},[5555,18007,5620],{"class":5603},[5555,18009,5434],{"class":5616},[5555,18011,5620],{"class":5603},[5555,18013,6368],{"class":5599},[5555,18015,6371],{"class":5603},[5555,18017,5596],{"class":5595},[5555,18019,5841],{"class":5634},[5555,18021,5844],{"class":5603},[5555,18023,5847],{"class":5561},[5555,18025,5841],{"class":5634},[5555,18027,8179],{"class":5603},[5555,18029,5648],{"class":5641},[5555,18031,5863],{"class":5603},[5555,18033,18034],{"class":5557,"line":5748},[5555,18035,5751],{"class":5603},[5555,18037,18038],{"class":5557,"line":5754},[5555,18039,18040],{"class":5757},"    \u002F\u002F ❌ Помилка компіляції: filter не підтримує random access\n",[5555,18042,18043],{"class":5557,"line":5761},[5555,18044,18045],{"class":5757},"    \u002F\u002F auto third = view[2];\n",[5555,18047,18048],{"class":5557,"line":5782},[5555,18049,5751],{"class":5603},[5555,18051,18052],{"class":5557,"line":5815},[5555,18053,18054],{"class":5757},"    \u002F\u002F ✅ Потрібна ітерація\n",[5555,18056,18057,18059,18061,18063,18065,18067,18069],{"class":5557,"line":5833},[5555,18058,6342],{"class":5595},[5555,18060,6852],{"class":5634},[5555,18062,6348],{"class":5603},[5555,18064,12708],{"class":5634},[5555,18066,5428],{"class":5603},[5555,18068,5799],{"class":5599},[5555,18070,8210],{"class":5603},[5555,18072,18073,18075,18077,18080,18082,18084,18086,18088],{"class":5557,"line":5866},[5555,18074,5617],{"class":5616},[5555,18076,5620],{"class":5603},[5555,18078,18079],{"class":5599},"advance",[5555,18081,5792],{"class":5603},[5555,18083,13907],{"class":5634},[5555,18085,5645],{"class":5603},[5555,18087,5648],{"class":5641},[5555,18089,5915],{"class":5603},[5555,18091,18092,18094,18097,18100,18102],{"class":5557,"line":5871},[5555,18093,6342],{"class":5595},[5555,18095,18096],{"class":5634}," third",[5555,18098,18099],{"class":5603}," = *",[5555,18101,13907],{"class":5634},[5555,18103,5779],{"class":5603},[5555,18105,18106],{"class":5557,"line":5877},[5555,18107,5751],{"class":5603},[5555,18109,18110,18112,18114],{"class":5557,"line":5900},[5555,18111,6113],{"class":5561},[5555,18113,6116],{"class":5641},[5555,18115,5779],{"class":5603},[5555,18117,18118],{"class":5557,"line":5918},[5555,18119,6124],{"class":5603},[5524,18121],{},[5527,18123,18125],{"id":18124},"міграція-з-stl-на-ranges","Міграція з STL на Ranges",[5539,18127,18129],{"id":18128},"крок-1-замінити-алгоритми-на-range-based","Крок 1: Замінити алгоритми на range-based",[13049,18131,18132,18286],{},[5544,18133,18136],{"className":5546,"code":18134,"filename":18135,"language":5549,"meta":5551,"style":5551},"std::vector\u003Cint> vec = {3, 1, 4, 1, 5};\n\nstd::sort(vec.begin(), vec.end());\n\nauto it = std::find(vec.begin(), vec.end(), 4);\n\nint sum = std::accumulate(vec.begin(), vec.end(), 0);\n","До (C++17)",[5425,18137,18138,18176,18180,18206,18210,18246,18250],{"__ignoreMap":5551},[5555,18139,18140,18142,18144,18146,18148,18150,18152,18154,18156,18158,18160,18162,18164,18166,18168,18170,18172,18174],{"class":5557,"line":5558},[5555,18141,6359],{"class":5616},[5555,18143,5620],{"class":5603},[5555,18145,5623],{"class":5634},[5555,18147,5626],{"class":5603},[5555,18149,5596],{"class":5595},[5555,18151,5631],{"class":5603},[5555,18153,6471],{"class":5634},[5555,18155,5638],{"class":5603},[5555,18157,5653],{"class":5641},[5555,18159,5645],{"class":5603},[5555,18161,5642],{"class":5641},[5555,18163,5645],{"class":5603},[5555,18165,5658],{"class":5641},[5555,18167,5645],{"class":5603},[5555,18169,5642],{"class":5641},[5555,18171,5645],{"class":5603},[5555,18173,5663],{"class":5641},[5555,18175,5745],{"class":5603},[5555,18177,18178],{"class":5557,"line":5569},[5555,18179,5589],{"emptyLinePlaceholder":5588},[5555,18181,18182,18184,18186,18188,18190,18192,18194,18196,18198,18200,18202,18204],{"class":5557,"line":5577},[5555,18183,6359],{"class":5616},[5555,18185,5620],{"class":5603},[5555,18187,6007],{"class":5599},[5555,18189,5792],{"class":5603},[5555,18191,6471],{"class":5634},[5555,18193,5428],{"class":5603},[5555,18195,5799],{"class":5599},[5555,18197,5802],{"class":5603},[5555,18199,6471],{"class":5634},[5555,18201,5428],{"class":5603},[5555,18203,5809],{"class":5599},[5555,18205,6026],{"class":5603},[5555,18207,18208],{"class":5557,"line":5585},[5555,18209,5589],{"emptyLinePlaceholder":5588},[5555,18211,18212,18214,18216,18218,18220,18222,18224,18226,18228,18230,18232,18234,18236,18238,18240,18242,18244],{"class":5557,"line":5592},[5555,18213,8105],{"class":5595},[5555,18215,6852],{"class":5634},[5555,18217,6348],{"class":5603},[5555,18219,6359],{"class":5616},[5555,18221,5620],{"class":5603},[5555,18223,6861],{"class":5599},[5555,18225,5792],{"class":5603},[5555,18227,6471],{"class":5634},[5555,18229,5428],{"class":5603},[5555,18231,5799],{"class":5599},[5555,18233,5802],{"class":5603},[5555,18235,6471],{"class":5634},[5555,18237,5428],{"class":5603},[5555,18239,5809],{"class":5599},[5555,18241,5802],{"class":5603},[5555,18243,5658],{"class":5641},[5555,18245,5915],{"class":5603},[5555,18247,18248],{"class":5557,"line":5607},[5555,18249,5589],{"emptyLinePlaceholder":5588},[5555,18251,18252,18254,18256,18258,18260,18262,18264,18266,18268,18270,18272,18274,18276,18278,18280,18282,18284],{"class":5557,"line":5613},[5555,18253,5596],{"class":5595},[5555,18255,6895],{"class":5634},[5555,18257,6348],{"class":5603},[5555,18259,6359],{"class":5616},[5555,18261,5620],{"class":5603},[5555,18263,6904],{"class":5599},[5555,18265,5792],{"class":5603},[5555,18267,6471],{"class":5634},[5555,18269,5428],{"class":5603},[5555,18271,5799],{"class":5599},[5555,18273,5802],{"class":5603},[5555,18275,6471],{"class":5634},[5555,18277,5428],{"class":5603},[5555,18279,5809],{"class":5599},[5555,18281,5802],{"class":5603},[5555,18283,5860],{"class":5641},[5555,18285,5915],{"class":5603},[5544,18287,18290],{"className":5546,"code":18288,"filename":18289,"language":5549,"meta":5551,"style":5551},"std::vector\u003Cint> vec = {3, 1, 4, 1, 5};\n\nstd::ranges::sort(vec);\n\nauto it = std::ranges::find(vec, 4);\n\nint sum = std::ranges::fold_left(vec, 0, std::plus{});\n","Після (C++20)",[5425,18291,18292,18330,18334,18352,18356,18384,18388],{"__ignoreMap":5551},[5555,18293,18294,18296,18298,18300,18302,18304,18306,18308,18310,18312,18314,18316,18318,18320,18322,18324,18326,18328],{"class":5557,"line":5558},[5555,18295,6359],{"class":5616},[5555,18297,5620],{"class":5603},[5555,18299,5623],{"class":5634},[5555,18301,5626],{"class":5603},[5555,18303,5596],{"class":5595},[5555,18305,5631],{"class":5603},[5555,18307,6471],{"class":5634},[5555,18309,5638],{"class":5603},[5555,18311,5653],{"class":5641},[5555,18313,5645],{"class":5603},[5555,18315,5642],{"class":5641},[5555,18317,5645],{"class":5603},[5555,18319,5658],{"class":5641},[5555,18321,5645],{"class":5603},[5555,18323,5642],{"class":5641},[5555,18325,5645],{"class":5603},[5555,18327,5663],{"class":5641},[5555,18329,5745],{"class":5603},[5555,18331,18332],{"class":5557,"line":5569},[5555,18333,5589],{"emptyLinePlaceholder":5588},[5555,18335,18336,18338,18340,18342,18344,18346,18348,18350],{"class":5557,"line":5577},[5555,18337,6359],{"class":5616},[5555,18339,5620],{"class":5603},[5555,18341,6499],{"class":5616},[5555,18343,5620],{"class":5603},[5555,18345,6007],{"class":5599},[5555,18347,5792],{"class":5603},[5555,18349,6471],{"class":5634},[5555,18351,5915],{"class":5603},[5555,18353,18354],{"class":5557,"line":5585},[5555,18355,5589],{"emptyLinePlaceholder":5588},[5555,18357,18358,18360,18362,18364,18366,18368,18370,18372,18374,18376,18378,18380,18382],{"class":5557,"line":5592},[5555,18359,8105],{"class":5595},[5555,18361,6852],{"class":5634},[5555,18363,6348],{"class":5603},[5555,18365,6359],{"class":5616},[5555,18367,5620],{"class":5603},[5555,18369,6499],{"class":5616},[5555,18371,5620],{"class":5603},[5555,18373,6861],{"class":5599},[5555,18375,5792],{"class":5603},[5555,18377,6471],{"class":5634},[5555,18379,5645],{"class":5603},[5555,18381,5658],{"class":5641},[5555,18383,5915],{"class":5603},[5555,18385,18386],{"class":5557,"line":5607},[5555,18387,5589],{"emptyLinePlaceholder":5588},[5555,18389,18390,18392,18394,18396,18398,18400,18402,18404,18406,18408,18410,18412,18414,18416,18418,18420,18422],{"class":5557,"line":5613},[5555,18391,5596],{"class":5595},[5555,18393,6895],{"class":5634},[5555,18395,6348],{"class":5603},[5555,18397,6359],{"class":5616},[5555,18399,5620],{"class":5603},[5555,18401,6499],{"class":5616},[5555,18403,5620],{"class":5603},[5555,18405,7142],{"class":5599},[5555,18407,5792],{"class":5603},[5555,18409,6471],{"class":5634},[5555,18411,5645],{"class":5603},[5555,18413,5860],{"class":5641},[5555,18415,5645],{"class":5603},[5555,18417,6359],{"class":5616},[5555,18419,5620],{"class":5603},[5555,18421,7159],{"class":5634},[5555,18423,7162],{"class":5603},[5539,18425,18427],{"id":18426},"крок-2-використати-views-замість-проміжних-контейнерів","Крок 2: Використати views замість проміжних контейнерів",[13049,18429,18430,18674],{},[5544,18431,18433],{"className":5546,"code":18432,"filename":18135,"language":5549,"meta":5551,"style":5551},"std::vector\u003Cint> data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n\n\u002F\u002F Проміжний контейнер\nstd::vector\u003Cint> evens;\nstd::copy_if(data.begin(), data.end(),\n             std::back_inserter(evens),\n             [](int n) { return n % 2 == 0; });\n\n\u002F\u002F Ще один проміжний\nstd::vector\u003Cint> doubled;\nstd::transform(evens.begin(), evens.end(),\n               std::back_inserter(doubled),\n               [](int n) { return n * 2; });\n",[5425,18434,18435,18493,18497,18502,18520,18546,18561,18586,18590,18595,18613,18639,18654],{"__ignoreMap":5551},[5555,18436,18437,18439,18441,18443,18445,18447,18449,18451,18453,18455,18457,18459,18461,18463,18465,18467,18469,18471,18473,18475,18477,18479,18481,18483,18485,18487,18489,18491],{"class":5557,"line":5558},[5555,18438,6359],{"class":5616},[5555,18440,5620],{"class":5603},[5555,18442,5623],{"class":5634},[5555,18444,5626],{"class":5603},[5555,18446,5596],{"class":5595},[5555,18448,5631],{"class":5603},[5555,18450,14569],{"class":5634},[5555,18452,5638],{"class":5603},[5555,18454,5642],{"class":5641},[5555,18456,5645],{"class":5603},[5555,18458,5648],{"class":5641},[5555,18460,5645],{"class":5603},[5555,18462,5653],{"class":5641},[5555,18464,5645],{"class":5603},[5555,18466,5658],{"class":5641},[5555,18468,5645],{"class":5603},[5555,18470,5663],{"class":5641},[5555,18472,5645],{"class":5603},[5555,18474,5668],{"class":5641},[5555,18476,5645],{"class":5603},[5555,18478,5673],{"class":5641},[5555,18480,5645],{"class":5603},[5555,18482,5678],{"class":5641},[5555,18484,5645],{"class":5603},[5555,18486,5683],{"class":5641},[5555,18488,5645],{"class":5603},[5555,18490,5688],{"class":5641},[5555,18492,5745],{"class":5603},[5555,18494,18495],{"class":5557,"line":5569},[5555,18496,5589],{"emptyLinePlaceholder":5588},[5555,18498,18499],{"class":5557,"line":5577},[5555,18500,18501],{"class":5757},"\u002F\u002F Проміжний контейнер\n",[5555,18503,18504,18506,18508,18510,18512,18514,18516,18518],{"class":5557,"line":5585},[5555,18505,6359],{"class":5616},[5555,18507,5620],{"class":5603},[5555,18509,5623],{"class":5634},[5555,18511,5626],{"class":5603},[5555,18513,5596],{"class":5595},[5555,18515,5631],{"class":5603},[5555,18517,5776],{"class":5634},[5555,18519,5779],{"class":5603},[5555,18521,18522,18524,18526,18528,18530,18532,18534,18536,18538,18540,18542,18544],{"class":5557,"line":5592},[5555,18523,6359],{"class":5616},[5555,18525,5620],{"class":5603},[5555,18527,5789],{"class":5599},[5555,18529,5792],{"class":5603},[5555,18531,14569],{"class":5634},[5555,18533,5428],{"class":5603},[5555,18535,5799],{"class":5599},[5555,18537,5802],{"class":5603},[5555,18539,14569],{"class":5634},[5555,18541,5428],{"class":5603},[5555,18543,5809],{"class":5599},[5555,18545,5963],{"class":5603},[5555,18547,18548,18551,18553,18555,18557,18559],{"class":5557,"line":5607},[5555,18549,18550],{"class":5616},"             std",[5555,18552,5620],{"class":5603},[5555,18554,5823],{"class":5599},[5555,18556,5792],{"class":5603},[5555,18558,5776],{"class":5634},[5555,18560,5830],{"class":5603},[5555,18562,18563,18566,18568,18570,18572,18574,18576,18578,18580,18582,18584],{"class":5557,"line":5613},[5555,18564,18565],{"class":5603},"             [](",[5555,18567,5596],{"class":5595},[5555,18569,5841],{"class":5634},[5555,18571,5844],{"class":5603},[5555,18573,5847],{"class":5561},[5555,18575,5841],{"class":5634},[5555,18577,5852],{"class":5603},[5555,18579,5648],{"class":5641},[5555,18581,5857],{"class":5603},[5555,18583,5860],{"class":5641},[5555,18585,5863],{"class":5603},[5555,18587,18588],{"class":5557,"line":5694},[5555,18589,5589],{"emptyLinePlaceholder":5588},[5555,18591,18592],{"class":5557,"line":5748},[5555,18593,18594],{"class":5757},"\u002F\u002F Ще один проміжний\n",[5555,18596,18597,18599,18601,18603,18605,18607,18609,18611],{"class":5557,"line":5754},[5555,18598,6359],{"class":5616},[5555,18600,5620],{"class":5603},[5555,18602,5623],{"class":5634},[5555,18604,5626],{"class":5603},[5555,18606,5596],{"class":5595},[5555,18608,5631],{"class":5603},[5555,18610,9614],{"class":5634},[5555,18612,5779],{"class":5603},[5555,18614,18615,18617,18619,18621,18623,18625,18627,18629,18631,18633,18635,18637],{"class":5557,"line":5761},[5555,18616,6359],{"class":5616},[5555,18618,5620],{"class":5603},[5555,18620,5936],{"class":5599},[5555,18622,5792],{"class":5603},[5555,18624,5776],{"class":5634},[5555,18626,5428],{"class":5603},[5555,18628,5799],{"class":5599},[5555,18630,5802],{"class":5603},[5555,18632,5776],{"class":5634},[5555,18634,5428],{"class":5603},[5555,18636,5809],{"class":5599},[5555,18638,5963],{"class":5603},[5555,18640,18641,18644,18646,18648,18650,18652],{"class":5557,"line":5782},[5555,18642,18643],{"class":5616},"               std",[5555,18645,5620],{"class":5603},[5555,18647,5823],{"class":5599},[5555,18649,5792],{"class":5603},[5555,18651,9614],{"class":5634},[5555,18653,5830],{"class":5603},[5555,18655,18656,18658,18660,18662,18664,18666,18668,18670,18672],{"class":5557,"line":5815},[5555,18657,13302],{"class":5603},[5555,18659,5596],{"class":5595},[5555,18661,5841],{"class":5634},[5555,18663,5844],{"class":5603},[5555,18665,5847],{"class":5561},[5555,18667,5841],{"class":5634},[5555,18669,5982],{"class":5603},[5555,18671,5648],{"class":5641},[5555,18673,5863],{"class":5603},[5544,18675,18677],{"className":5546,"code":18676,"filename":18289,"language":5549,"meta":5551,"style":5551},"std::vector\u003Cint> data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};\n\n\u002F\u002F Один view без проміжних контейнерів\nauto result = data\n    | std::views::filter([](int n) { return n % 2 == 0; })\n    | std::views::transform([](int n) { return n * 2; });\n\n\u002F\u002F Матеріалізація лише якщо потрібно\nstd::vector\u003Cint> vec(result.begin(), result.end());\n",[5425,18678,18679,18737,18741,18746,18756,18792,18824,18828,18833],{"__ignoreMap":5551},[5555,18680,18681,18683,18685,18687,18689,18691,18693,18695,18697,18699,18701,18703,18705,18707,18709,18711,18713,18715,18717,18719,18721,18723,18725,18727,18729,18731,18733,18735],{"class":5557,"line":5558},[5555,18682,6359],{"class":5616},[5555,18684,5620],{"class":5603},[5555,18686,5623],{"class":5634},[5555,18688,5626],{"class":5603},[5555,18690,5596],{"class":5595},[5555,18692,5631],{"class":5603},[5555,18694,14569],{"class":5634},[5555,18696,5638],{"class":5603},[5555,18698,5642],{"class":5641},[5555,18700,5645],{"class":5603},[5555,18702,5648],{"class":5641},[5555,18704,5645],{"class":5603},[5555,18706,5653],{"class":5641},[5555,18708,5645],{"class":5603},[5555,18710,5658],{"class":5641},[5555,18712,5645],{"class":5603},[5555,18714,5663],{"class":5641},[5555,18716,5645],{"class":5603},[5555,18718,5668],{"class":5641},[5555,18720,5645],{"class":5603},[5555,18722,5673],{"class":5641},[5555,18724,5645],{"class":5603},[5555,18726,5678],{"class":5641},[5555,18728,5645],{"class":5603},[5555,18730,5683],{"class":5641},[5555,18732,5645],{"class":5603},[5555,18734,5688],{"class":5641},[5555,18736,5745],{"class":5603},[5555,18738,18739],{"class":5557,"line":5569},[5555,18740,5589],{"emptyLinePlaceholder":5588},[5555,18742,18743],{"class":5557,"line":5577},[5555,18744,18745],{"class":5757},"\u002F\u002F Один view без проміжних контейнерів\n",[5555,18747,18748,18750,18752,18754],{"class":5557,"line":5585},[5555,18749,8105],{"class":5595},[5555,18751,6345],{"class":5634},[5555,18753,6348],{"class":5603},[5555,18755,16371],{"class":5634},[5555,18757,18758,18760,18762,18764,18766,18768,18770,18772,18774,18776,18778,18780,18782,18784,18786,18788,18790],{"class":5557,"line":5592},[5555,18759,11858],{"class":5603},[5555,18761,6359],{"class":5616},[5555,18763,5620],{"class":5603},[5555,18765,5434],{"class":5616},[5555,18767,5620],{"class":5603},[5555,18769,6368],{"class":5599},[5555,18771,6371],{"class":5603},[5555,18773,5596],{"class":5595},[5555,18775,5841],{"class":5634},[5555,18777,5844],{"class":5603},[5555,18779,5847],{"class":5561},[5555,18781,5841],{"class":5634},[5555,18783,5852],{"class":5603},[5555,18785,5648],{"class":5641},[5555,18787,5857],{"class":5603},[5555,18789,5860],{"class":5641},[5555,18791,6392],{"class":5603},[5555,18793,18794,18796,18798,18800,18802,18804,18806,18808,18810,18812,18814,18816,18818,18820,18822],{"class":5557,"line":5607},[5555,18795,11858],{"class":5603},[5555,18797,6359],{"class":5616},[5555,18799,5620],{"class":5603},[5555,18801,5434],{"class":5616},[5555,18803,5620],{"class":5603},[5555,18805,5936],{"class":5599},[5555,18807,6371],{"class":5603},[5555,18809,5596],{"class":5595},[5555,18811,5841],{"class":5634},[5555,18813,5844],{"class":5603},[5555,18815,5847],{"class":5561},[5555,18817,5841],{"class":5634},[5555,18819,5982],{"class":5603},[5555,18821,5648],{"class":5641},[5555,18823,5863],{"class":5603},[5555,18825,18826],{"class":5557,"line":5613},[5555,18827,5589],{"emptyLinePlaceholder":5588},[5555,18829,18830],{"class":5557,"line":5694},[5555,18831,18832],{"class":5757},"\u002F\u002F Матеріалізація лише якщо потрібно\n",[5555,18834,18835,18837,18839,18841,18843,18845,18847,18849,18851,18853,18855,18857,18859,18861,18863,18865],{"class":5557,"line":5748},[5555,18836,6359],{"class":5616},[5555,18838,5620],{"class":5603},[5555,18840,5623],{"class":5616},[5555,18842,5626],{"class":5603},[5555,18844,5596],{"class":5595},[5555,18846,5631],{"class":5603},[5555,18848,6471],{"class":5599},[5555,18850,5792],{"class":5603},[5555,18852,6476],{"class":5616},[5555,18854,5428],{"class":5603},[5555,18856,5799],{"class":5599},[5555,18858,5802],{"class":5603},[5555,18860,6476],{"class":5616},[5555,18862,5428],{"class":5603},[5555,18864,5809],{"class":5599},[5555,18866,6026],{"class":5603},[5539,18868,18870],{"id":18869},"крок-3-спростити-цикли","Крок 3: Спростити цикли",[13049,18872,18873,18995],{},[5544,18874,18876],{"className":5546,"code":18875,"filename":18135,"language":5549,"meta":5551,"style":5551},"for (size_t i = 0; i \u003C vec.size(); ++i)\n{\n    if (vec[i] % 2 == 0)\n    {\n        vec[i] *= 2;\n        std::cout \u003C\u003C vec[i] \u003C\u003C \"\\n\";\n    }\n}\n",[5425,18877,18878,18912,18916,18940,18944,18960,18987,18991],{"__ignoreMap":5551},[5555,18879,18880,18882,18884,18887,18889,18891,18893,18895,18897,18899,18901,18903,18905,18908,18910],{"class":5557,"line":5558},[5555,18881,17121],{"class":5561},[5555,18883,5439],{"class":5603},[5555,18885,18886],{"class":5595},"size_t",[5555,18888,15248],{"class":5634},[5555,18890,6348],{"class":5603},[5555,18892,5860],{"class":5641},[5555,18894,16884],{"class":5603},[5555,18896,15328],{"class":5634},[5555,18898,16889],{"class":5603},[5555,18900,6471],{"class":5634},[5555,18902,5428],{"class":5603},[5555,18904,5889],{"class":5599},[5555,18906,18907],{"class":5603},"(); ++",[5555,18909,15328],{"class":5634},[5555,18911,5897],{"class":5603},[5555,18913,18914],{"class":5557,"line":5569},[5555,18915,5610],{"class":5603},[5555,18917,18918,18920,18922,18924,18927,18929,18932,18934,18936,18938],{"class":5557,"line":5577},[5555,18919,5880],{"class":5561},[5555,18921,5439],{"class":5603},[5555,18923,6471],{"class":5634},[5555,18925,18926],{"class":5603},"[",[5555,18928,15328],{"class":5634},[5555,18930,18931],{"class":5603},"] % ",[5555,18933,5648],{"class":5641},[5555,18935,5857],{"class":5603},[5555,18937,5860],{"class":5641},[5555,18939,5897],{"class":5603},[5555,18941,18942],{"class":5557,"line":5585},[5555,18943,12361],{"class":5603},[5555,18945,18946,18949,18951,18953,18956,18958],{"class":5557,"line":5592},[5555,18947,18948],{"class":5634},"        vec",[5555,18950,18926],{"class":5603},[5555,18952,15328],{"class":5634},[5555,18954,18955],{"class":5603},"] *= ",[5555,18957,5648],{"class":5641},[5555,18959,5779],{"class":5603},[5555,18961,18962,18964,18966,18968,18970,18972,18974,18976,18979,18981,18983,18985],{"class":5557,"line":5607},[5555,18963,6062],{"class":5616},[5555,18965,5620],{"class":5603},[5555,18967,6067],{"class":5634},[5555,18969,6070],{"class":5603},[5555,18971,6471],{"class":5634},[5555,18973,18926],{"class":5603},[5555,18975,15328],{"class":5634},[5555,18977,18978],{"class":5603},"] \u003C\u003C ",[5555,18980,6094],{"class":5565},[5555,18982,6098],{"class":6097},[5555,18984,6094],{"class":5565},[5555,18986,5779],{"class":5603},[5555,18988,18989],{"class":5557,"line":5613},[5555,18990,12543],{"class":5603},[5555,18992,18993],{"class":5557,"line":5694},[5555,18994,6124],{"class":5603},[5544,18996,18998],{"className":5546,"code":18997,"filename":18289,"language":5549,"meta":5551,"style":5551},"for (int n : vec\n           | std::views::filter([](int n) { return n % 2 == 0; })\n           | std::views::transform([](int n) { return n * 2; }))\n{\n    std::cout \u003C\u003C n \u003C\u003C \"\\n\";\n}\n",[5425,18999,19000,19015,19052,19085,19089,19111],{"__ignoreMap":5551},[5555,19001,19002,19004,19006,19008,19010,19012],{"class":5557,"line":5558},[5555,19003,17121],{"class":5561},[5555,19005,5439],{"class":5603},[5555,19007,5596],{"class":5595},[5555,19009,5841],{"class":5634},[5555,19011,6052],{"class":5603},[5555,19013,19014],{"class":5634},"vec\n",[5555,19016,19017,19020,19022,19024,19026,19028,19030,19032,19034,19036,19038,19040,19042,19044,19046,19048,19050],{"class":5557,"line":5569},[5555,19018,19019],{"class":5603},"           | ",[5555,19021,6359],{"class":5616},[5555,19023,5620],{"class":5603},[5555,19025,5434],{"class":5616},[5555,19027,5620],{"class":5603},[5555,19029,6368],{"class":5599},[5555,19031,6371],{"class":5603},[5555,19033,5596],{"class":5595},[5555,19035,5841],{"class":5634},[5555,19037,5844],{"class":5603},[5555,19039,5847],{"class":5561},[5555,19041,5841],{"class":5634},[5555,19043,5852],{"class":5603},[5555,19045,5648],{"class":5641},[5555,19047,5857],{"class":5603},[5555,19049,5860],{"class":5641},[5555,19051,6392],{"class":5603},[5555,19053,19054,19056,19058,19060,19062,19064,19066,19068,19070,19072,19074,19076,19078,19080,19082],{"class":5557,"line":5577},[5555,19055,19019],{"class":5603},[5555,19057,6359],{"class":5616},[5555,19059,5620],{"class":5603},[5555,19061,5434],{"class":5616},[5555,19063,5620],{"class":5603},[5555,19065,5936],{"class":5599},[5555,19067,6371],{"class":5603},[5555,19069,5596],{"class":5595},[5555,19071,5841],{"class":5634},[5555,19073,5844],{"class":5603},[5555,19075,5847],{"class":5561},[5555,19077,5841],{"class":5634},[5555,19079,5982],{"class":5603},[5555,19081,5648],{"class":5641},[5555,19083,19084],{"class":5603},"; }))\n",[5555,19086,19087],{"class":5557,"line":5585},[5555,19088,5610],{"class":5603},[5555,19090,19091,19093,19095,19097,19099,19101,19103,19105,19107,19109],{"class":5557,"line":5592},[5555,19092,5617],{"class":5616},[5555,19094,5620],{"class":5603},[5555,19096,6067],{"class":5634},[5555,19098,6070],{"class":5603},[5555,19100,6073],{"class":5634},[5555,19102,6070],{"class":5603},[5555,19104,6094],{"class":5565},[5555,19106,6098],{"class":6097},[5555,19108,6094],{"class":5565},[5555,19110,5779],{"class":5603},[5555,19112,19113],{"class":5557,"line":5607},[5555,19114,6124],{"class":5603},[5524,19116],{},[5527,19118,19120],{"id":19119},"ranges-у-c23-та-майбутньому","Ranges у C++23 та майбутньому",[5532,19122,19123],{},"C++23 додає нові можливості для ranges:",[5539,19125,19127,19130],{"id":19126},"stdrangesto-конвертація-в-контейнер",[5425,19128,19129],{},"std::ranges::to"," — конвертація в контейнер",[5544,19132,19135],{"className":5546,"code":19133,"filename":19134,"language":5549,"meta":5550,"style":5551},"#include \u003Cvector>\n#include \u003Cranges>\n\nint main()\n{\n    auto numbers = std::views::iota(1, 11);\n    \n    \u002F\u002F C++20: вручну через конструктор\n    std::vector\u003Cint> vec1(numbers.begin(), numbers.end());\n    \n    \u002F\u002F C++23: елегантна конвертація\n    auto vec2 = numbers | std::ranges::to\u003Cstd::vector>();\n    \n    \u002F\u002F З трансформацією\n    auto vec3 = std::views::iota(1, 11)\n        | std::views::transform([](int n) { return n * n; })\n        | std::ranges::to\u003Cstd::vector>();\n    \n    return 0;\n}\n","RangesToCpp23.cpp",[5425,19136,19137,19143,19149,19153,19161,19165,19193,19197,19202,19237,19241,19246,19280,19284,19289,19318,19350,19374,19378,19386],{"__ignoreMap":5551},[5555,19138,19139,19141],{"class":5557,"line":5558},[5555,19140,5562],{"class":5561},[5555,19142,5574],{"class":5565},[5555,19144,19145,19147],{"class":5557,"line":5569},[5555,19146,5562],{"class":5561},[5555,19148,6206],{"class":5565},[5555,19150,19151],{"class":5557,"line":5577},[5555,19152,5589],{"emptyLinePlaceholder":5588},[5555,19154,19155,19157,19159],{"class":5557,"line":5585},[5555,19156,5596],{"class":5595},[5555,19158,5600],{"class":5599},[5555,19160,5604],{"class":5603},[5555,19162,19163],{"class":5557,"line":5592},[5555,19164,5610],{"class":5603},[5555,19166,19167,19169,19171,19173,19175,19177,19179,19181,19183,19185,19187,19189,19191],{"class":5557,"line":5607},[5555,19168,6342],{"class":5595},[5555,19170,9790],{"class":5634},[5555,19172,6348],{"class":5603},[5555,19174,6359],{"class":5616},[5555,19176,5620],{"class":5603},[5555,19178,5434],{"class":5616},[5555,19180,5620],{"class":5603},[5555,19182,8492],{"class":5599},[5555,19184,5792],{"class":5603},[5555,19186,5642],{"class":5641},[5555,19188,5645],{"class":5603},[5555,19190,8694],{"class":5641},[5555,19192,5915],{"class":5603},[5555,19194,19195],{"class":5557,"line":5613},[5555,19196,5751],{"class":5603},[5555,19198,19199],{"class":5557,"line":5694},[5555,19200,19201],{"class":5757},"    \u002F\u002F C++20: вручну через конструктор\n",[5555,19203,19204,19206,19208,19210,19212,19214,19216,19219,19221,19223,19225,19227,19229,19231,19233,19235],{"class":5557,"line":5748},[5555,19205,5617],{"class":5616},[5555,19207,5620],{"class":5603},[5555,19209,5623],{"class":5616},[5555,19211,5626],{"class":5603},[5555,19213,5596],{"class":5595},[5555,19215,5631],{"class":5603},[5555,19217,19218],{"class":5599},"vec1",[5555,19220,5792],{"class":5603},[5555,19222,5635],{"class":5634},[5555,19224,5428],{"class":5603},[5555,19226,5799],{"class":5599},[5555,19228,5802],{"class":5603},[5555,19230,5635],{"class":5634},[5555,19232,5428],{"class":5603},[5555,19234,5809],{"class":5599},[5555,19236,6026],{"class":5603},[5555,19238,19239],{"class":5557,"line":5754},[5555,19240,5751],{"class":5603},[5555,19242,19243],{"class":5557,"line":5761},[5555,19244,19245],{"class":5757},"    \u002F\u002F C++23: елегантна конвертація\n",[5555,19247,19248,19250,19253,19255,19257,19259,19261,19263,19265,19267,19269,19271,19273,19275,19277],{"class":5557,"line":5782},[5555,19249,6342],{"class":5595},[5555,19251,19252],{"class":5634}," vec2",[5555,19254,6348],{"class":5603},[5555,19256,5635],{"class":5634},[5555,19258,7853],{"class":5603},[5555,19260,6359],{"class":5616},[5555,19262,5620],{"class":5603},[5555,19264,6499],{"class":5616},[5555,19266,5620],{"class":5603},[5555,19268,17581],{"class":5599},[5555,19270,5626],{"class":5603},[5555,19272,6359],{"class":5616},[5555,19274,5620],{"class":5603},[5555,19276,5623],{"class":5616},[5555,19278,19279],{"class":5603},">();\n",[5555,19281,19282],{"class":5557,"line":5815},[5555,19283,5751],{"class":5603},[5555,19285,19286],{"class":5557,"line":5833},[5555,19287,19288],{"class":5757},"    \u002F\u002F З трансформацією\n",[5555,19290,19291,19293,19296,19298,19300,19302,19304,19306,19308,19310,19312,19314,19316],{"class":5557,"line":5866},[5555,19292,6342],{"class":5595},[5555,19294,19295],{"class":5634}," vec3",[5555,19297,6348],{"class":5603},[5555,19299,6359],{"class":5616},[5555,19301,5620],{"class":5603},[5555,19303,5434],{"class":5616},[5555,19305,5620],{"class":5603},[5555,19307,8492],{"class":5599},[5555,19309,5792],{"class":5603},[5555,19311,5642],{"class":5641},[5555,19313,5645],{"class":5603},[5555,19315,8694],{"class":5641},[5555,19317,5897],{"class":5603},[5555,19319,19320,19322,19324,19326,19328,19330,19332,19334,19336,19338,19340,19342,19344,19346,19348],{"class":5557,"line":5871},[5555,19321,6356],{"class":5603},[5555,19323,6359],{"class":5616},[5555,19325,5620],{"class":5603},[5555,19327,5434],{"class":5616},[5555,19329,5620],{"class":5603},[5555,19331,5936],{"class":5599},[5555,19333,6371],{"class":5603},[5555,19335,5596],{"class":5595},[5555,19337,5841],{"class":5634},[5555,19339,5844],{"class":5603},[5555,19341,5847],{"class":5561},[5555,19343,5841],{"class":5634},[5555,19345,5982],{"class":5603},[5555,19347,6073],{"class":5634},[5555,19349,6392],{"class":5603},[5555,19351,19352,19354,19356,19358,19360,19362,19364,19366,19368,19370,19372],{"class":5557,"line":5877},[5555,19353,6356],{"class":5603},[5555,19355,6359],{"class":5616},[5555,19357,5620],{"class":5603},[5555,19359,6499],{"class":5616},[5555,19361,5620],{"class":5603},[5555,19363,17581],{"class":5599},[5555,19365,5626],{"class":5603},[5555,19367,6359],{"class":5616},[5555,19369,5620],{"class":5603},[5555,19371,5623],{"class":5616},[5555,19373,19279],{"class":5603},[5555,19375,19376],{"class":5557,"line":5900},[5555,19377,5751],{"class":5603},[5555,19379,19380,19382,19384],{"class":5557,"line":5918},[5555,19381,6113],{"class":5561},[5555,19383,6116],{"class":5641},[5555,19385,5779],{"class":5603},[5555,19387,19388],{"class":5557,"line":5923},[5555,19389,6124],{"class":5603},[5539,19391,19393,19396],{"id":19392},"stdrangeszip-паралельна-ітерація",[5425,19394,19395],{},"std::ranges::zip"," — паралельна ітерація",[5544,19398,19401],{"className":5546,"code":19399,"filename":19400,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cvector>\n#include \u003Cranges>\n\nint main()\n{\n    std::vector\u003Cstd::string> names = {\"Alice\", \"Bob\", \"Charlie\"};\n    std::vector\u003Cint> ages = {30, 25, 35};\n    \n    \u002F\u002F Паралельна ітерація двох діапазонів\n    for (auto [name, age] : std::views::zip(names, ages))\n    {\n        std::cout \u003C\u003C name \u003C\u003C \" is \" \u003C\u003C age \u003C\u003C \" years old\\n\";\n    }\n    \n    return 0;\n}\n","ZipView.cpp",[5425,19402,19403,19409,19415,19421,19425,19433,19437,19471,19502,19506,19511,19551,19555,19587,19591,19595,19603],{"__ignoreMap":5551},[5555,19404,19405,19407],{"class":5557,"line":5558},[5555,19406,5562],{"class":5561},[5555,19408,5566],{"class":5565},[5555,19410,19411,19413],{"class":5557,"line":5569},[5555,19412,5562],{"class":5561},[5555,19414,5574],{"class":5565},[5555,19416,19417,19419],{"class":5557,"line":5577},[5555,19418,5562],{"class":5561},[5555,19420,6206],{"class":5565},[5555,19422,19423],{"class":5557,"line":5585},[5555,19424,5589],{"emptyLinePlaceholder":5588},[5555,19426,19427,19429,19431],{"class":5557,"line":5592},[5555,19428,5596],{"class":5595},[5555,19430,5600],{"class":5599},[5555,19432,5604],{"class":5603},[5555,19434,19435],{"class":5557,"line":5607},[5555,19436,5610],{"class":5603},[5555,19438,19439,19441,19443,19445,19447,19449,19451,19453,19455,19457,19459,19461,19463,19465,19467,19469],{"class":5557,"line":5613},[5555,19440,5617],{"class":5616},[5555,19442,5620],{"class":5603},[5555,19444,5623],{"class":5616},[5555,19446,5626],{"class":5603},[5555,19448,6359],{"class":5616},[5555,19450,5620],{"class":5603},[5555,19452,10496],{"class":5616},[5555,19454,5631],{"class":5603},[5555,19456,10664],{"class":5634},[5555,19458,5638],{"class":5603},[5555,19460,10516],{"class":5565},[5555,19462,5645],{"class":5603},[5555,19464,10531],{"class":5565},[5555,19466,5645],{"class":5603},[5555,19468,10545],{"class":5565},[5555,19470,5745],{"class":5603},[5555,19472,19473,19475,19477,19479,19481,19483,19485,19488,19490,19492,19494,19496,19498,19500],{"class":5557,"line":5694},[5555,19474,5617],{"class":5616},[5555,19476,5620],{"class":5603},[5555,19478,5623],{"class":5616},[5555,19480,5626],{"class":5603},[5555,19482,5596],{"class":5595},[5555,19484,5631],{"class":5603},[5555,19486,19487],{"class":5634},"ages",[5555,19489,5638],{"class":5603},[5555,19491,13684],{"class":5641},[5555,19493,5645],{"class":5603},[5555,19495,13697],{"class":5641},[5555,19497,5645],{"class":5603},[5555,19499,13710],{"class":5641},[5555,19501,5745],{"class":5603},[5555,19503,19504],{"class":5557,"line":5748},[5555,19505,5751],{"class":5603},[5555,19507,19508],{"class":5557,"line":5754},[5555,19509,19510],{"class":5757},"    \u002F\u002F Паралельна ітерація двох діапазонів\n",[5555,19512,19513,19515,19517,19519,19521,19523,19525,19527,19530,19532,19534,19536,19538,19541,19543,19545,19547,19549],{"class":5557,"line":5761},[5555,19514,6043],{"class":5561},[5555,19516,5439],{"class":5603},[5555,19518,8105],{"class":5595},[5555,19520,14874],{"class":5603},[5555,19522,10677],{"class":5634},[5555,19524,5645],{"class":5603},[5555,19526,13759],{"class":5634},[5555,19528,19529],{"class":5603},"] : ",[5555,19531,6359],{"class":5616},[5555,19533,5620],{"class":5603},[5555,19535,5434],{"class":5616},[5555,19537,5620],{"class":5603},[5555,19539,19540],{"class":5599},"zip",[5555,19542,5792],{"class":5603},[5555,19544,10664],{"class":5634},[5555,19546,5645],{"class":5603},[5555,19548,19487],{"class":5634},[5555,19550,8697],{"class":5603},[5555,19552,19553],{"class":5557,"line":5782},[5555,19554,12361],{"class":5603},[5555,19556,19557,19559,19561,19563,19565,19567,19569,19572,19574,19576,19578,19581,19583,19585],{"class":5557,"line":5815},[5555,19558,6062],{"class":5616},[5555,19560,5620],{"class":5603},[5555,19562,6067],{"class":5634},[5555,19564,6070],{"class":5603},[5555,19566,10677],{"class":5634},[5555,19568,6070],{"class":5603},[5555,19570,19571],{"class":5565},"\" is \"",[5555,19573,6070],{"class":5603},[5555,19575,13759],{"class":5634},[5555,19577,6070],{"class":5603},[5555,19579,19580],{"class":5565},"\" years old",[5555,19582,6098],{"class":6097},[5555,19584,6094],{"class":5565},[5555,19586,5779],{"class":5603},[5555,19588,19589],{"class":5557,"line":5833},[5555,19590,12543],{"class":5603},[5555,19592,19593],{"class":5557,"line":5866},[5555,19594,5751],{"class":5603},[5555,19596,19597,19599,19601],{"class":5557,"line":5871},[5555,19598,6113],{"class":5561},[5555,19600,6116],{"class":5641},[5555,19602,5779],{"class":5603},[5555,19604,19605],{"class":5557,"line":5877},[5555,19606,6124],{"class":5603},[5539,19608,19610,19613],{"id":19609},"stdrangeschunk-розбиття-на-шматки",[5425,19611,19612],{},"std::ranges::chunk"," — розбиття на шматки",[5544,19615,19618],{"className":5546,"code":19616,"filename":19617,"language":5549,"meta":5550,"style":5551},"#include \u003Ciostream>\n#include \u003Cranges>\n\nint main()\n{\n    auto numbers = std::views::iota(1, 21);\n    \n    \u002F\u002F Розбиваємо на групи по 5\n    for (auto chunk : numbers | std::views::chunk(5))\n    {\n        std::cout \u003C\u003C \"Chunk: \";\n        for (int n : chunk)\n            std::cout \u003C\u003C n \u003C\u003C \" \";\n        std::cout \u003C\u003C \"\\n\";\n    }\n    \n    return 0;\n}\n","ChunkView.cpp",[5425,19619,19620,19626,19632,19636,19644,19648,19676,19680,19685,19719,19723,19738,19754,19772,19790,19794,19798,19806],{"__ignoreMap":5551},[5555,19621,19622,19624],{"class":5557,"line":5558},[5555,19623,5562],{"class":5561},[5555,19625,5566],{"class":5565},[5555,19627,19628,19630],{"class":5557,"line":5569},[5555,19629,5562],{"class":5561},[5555,19631,6206],{"class":5565},[5555,19633,19634],{"class":5557,"line":5577},[5555,19635,5589],{"emptyLinePlaceholder":5588},[5555,19637,19638,19640,19642],{"class":5557,"line":5585},[5555,19639,5596],{"class":5595},[5555,19641,5600],{"class":5599},[5555,19643,5604],{"class":5603},[5555,19645,19646],{"class":5557,"line":5592},[5555,19647,5610],{"class":5603},[5555,19649,19650,19652,19654,19656,19658,19660,19662,19664,19666,19668,19670,19672,19674],{"class":5557,"line":5607},[5555,19651,6342],{"class":5595},[5555,19653,9790],{"class":5634},[5555,19655,6348],{"class":5603},[5555,19657,6359],{"class":5616},[5555,19659,5620],{"class":5603},[5555,19661,5434],{"class":5616},[5555,19663,5620],{"class":5603},[5555,19665,8492],{"class":5599},[5555,19667,5792],{"class":5603},[5555,19669,5642],{"class":5641},[5555,19671,5645],{"class":5603},[5555,19673,9811],{"class":5641},[5555,19675,5915],{"class":5603},[5555,19677,19678],{"class":5557,"line":5613},[5555,19679,5751],{"class":5603},[5555,19681,19682],{"class":5557,"line":5694},[5555,19683,19684],{"class":5757},"    \u002F\u002F Розбиваємо на групи по 5\n",[5555,19686,19687,19689,19691,19693,19696,19698,19700,19702,19704,19706,19708,19710,19713,19715,19717],{"class":5557,"line":5748},[5555,19688,6043],{"class":5561},[5555,19690,5439],{"class":5603},[5555,19692,8105],{"class":5595},[5555,19694,19695],{"class":5634}," chunk",[5555,19697,6052],{"class":5603},[5555,19699,5635],{"class":5634},[5555,19701,7853],{"class":5603},[5555,19703,6359],{"class":5616},[5555,19705,5620],{"class":5603},[5555,19707,5434],{"class":5616},[5555,19709,5620],{"class":5603},[5555,19711,19712],{"class":5599},"chunk",[5555,19714,5792],{"class":5603},[5555,19716,5663],{"class":5641},[5555,19718,8697],{"class":5603},[5555,19720,19721],{"class":5557,"line":5754},[5555,19722,12361],{"class":5603},[5555,19724,19725,19727,19729,19731,19733,19736],{"class":5557,"line":5761},[5555,19726,6062],{"class":5616},[5555,19728,5620],{"class":5603},[5555,19730,6067],{"class":5634},[5555,19732,6070],{"class":5603},[5555,19734,19735],{"class":5565},"\"Chunk: \"",[5555,19737,5779],{"class":5603},[5555,19739,19740,19742,19744,19746,19748,19750,19752],{"class":5557,"line":5782},[5555,19741,10963],{"class":5561},[5555,19743,5439],{"class":5603},[5555,19745,5596],{"class":5595},[5555,19747,5841],{"class":5634},[5555,19749,6052],{"class":5603},[5555,19751,19712],{"class":5634},[5555,19753,5897],{"class":5603},[5555,19755,19756,19758,19760,19762,19764,19766,19768,19770],{"class":5557,"line":5815},[5555,19757,10981],{"class":5616},[5555,19759,5620],{"class":5603},[5555,19761,6067],{"class":5634},[5555,19763,6070],{"class":5603},[5555,19765,6073],{"class":5634},[5555,19767,6070],{"class":5603},[5555,19769,6078],{"class":5565},[5555,19771,5779],{"class":5603},[5555,19773,19774,19776,19778,19780,19782,19784,19786,19788],{"class":5557,"line":5833},[5555,19775,6062],{"class":5616},[5555,19777,5620],{"class":5603},[5555,19779,6067],{"class":5634},[5555,19781,6070],{"class":5603},[5555,19783,6094],{"class":5565},[5555,19785,6098],{"class":6097},[5555,19787,6094],{"class":5565},[5555,19789,5779],{"class":5603},[5555,19791,19792],{"class":5557,"line":5866},[5555,19793,12543],{"class":5603},[5555,19795,19796],{"class":5557,"line":5871},[5555,19797,5751],{"class":5603},[5555,19799,19800,19802,19804],{"class":5557,"line":5877},[5555,19801,6113],{"class":5561},[5555,19803,6116],{"class":5641},[5555,19805,5779],{"class":5603},[5555,19807,19808],{"class":5557,"line":5900},[5555,19809,6124],{"class":5603},[5524,19811],{},[5527,19813,19815],{"id":19814},"резюме","Резюме",[5398,19817,19818,19854,19886,19916],{},[5401,19819,19822],{"icon":19820,"title":19821},"i-lucide-list","📌 Ranges",[5406,19823,19824,19832,19842,19848],{},[5409,19825,19826,19829,19830],{},[5413,19827,19828],{},"Узагальнення"," пари ітераторів ",[5425,19831,5427],{},[5409,19833,19834,19837,19838,6690,19840],{},[5413,19835,19836],{},"Спрощення"," коду — менше ",[5425,19839,6171],{},[5425,19841,6174],{},[5409,19843,19844,19847],{},[5413,19845,19846],{},"Безпечніше"," — менше помилок з ітераторами",[5409,19849,19850,19853],{},[5413,19851,19852],{},"Гнучкіше"," — працює з будь-яким range",[5401,19855,19858],{"icon":19856,"title":19857},"i-lucide-eye","📌 Views",[5406,19859,19860,19866,19874,19880],{},[5409,19861,19862,19865],{},[5413,19863,19864],{},"Ледачі адаптори"," — не володіють даними",[5409,19867,19868,6663,19871,19873],{},[5413,19869,19870],{},"Композиція",[5425,19872,5454],{}," оператор",[5409,19875,19876,19879],{},[5413,19877,19878],{},"Lazy evaluation"," — обчислення при потребі",[5409,19881,19882,19885],{},[5413,19883,19884],{},"Ефективність"," — без проміжних контейнерів",[5401,19887,19890],{"icon":19888,"title":19889},"i-lucide-thumbs-up","✅ Переваги",[5406,19891,19892,19898,19904,19910],{},[5409,19893,19894,19897],{},[5413,19895,19896],{},"Читабельність:"," декларативний стиль",[5409,19899,19900,19903],{},[5413,19901,19902],{},"Продуктивність:"," менше копіювань, раннє завершення",[5409,19905,19906,19909],{},[5413,19907,19908],{},"Експресивність:"," функціональний підхід",[5409,19911,19912,19915],{},[5413,19913,19914],{},"Безпека:"," менше індексів, більше абстракцій",[5401,19917,19920],{"icon":19918,"title":19919},"i-lucide-alert-triangle","⚠️ Обмеження",[5406,19921,19922,19928,19934,19939],{},[5409,19923,19924,19927],{},[5413,19925,19926],{},"Висячі посилання:"," view не володіє даними",[5409,19929,19930,19933],{},[5413,19931,19932],{},"Інвалідація:"," модифікація під час ітерації",[5409,19935,19936,19938],{},[5413,19937,19902],{}," багаторазова ітерація view може бути повільною",[5409,19940,19941,19944],{},[5413,19942,19943],{},"Компілятор:"," потребує C++20 підтримки",[7180,19946,19947,19952],{},[5532,19948,19949],{},[5413,19950,19951],{},"Золоте правило Ranges:",[6131,19953,19954,19960,19966,19972],{},[5409,19955,19956,19959],{},[5413,19957,19958],{},"Використовуйте range-based алгоритми"," замість пар ітераторів",[5409,19961,19962,19965],{},[5413,19963,19964],{},"Компонуйте views"," для трансформацій без проміжних контейнерів",[5409,19967,19968,19971],{},[5413,19969,19970],{},"Матеріалізуйте"," результат у контейнер, якщо потрібна багаторазова ітерація",[5409,19973,19974,19977],{},[5413,19975,19976],{},"Остерігайтесь"," висячих посилань при поверненні views з функцій",[6700,19979,19980,19986],{},[5532,19981,19982,19985],{},[5413,19983,19984],{},"Наступна тема:"," У наступних статтях можемо розглянути:",[5406,19987,19988,19994,20000,20005],{},[5409,19989,19990,19993],{},[5413,19991,19992],{},"Кастомні ranges"," — створення власних range-адапторів",[5409,19995,19996,19999],{},[5413,19997,19998],{},"Coroutines та ranges"," — генератори як ranges",[5409,20001,20002],{},[5413,20003,20004],{},"Ranges для файлового вводу\u002Fвиводу",[5409,20006,20007,20010],{},[5413,20008,20009],{},"Практичні патерни"," з ranges у реальних проєктах",[5524,20012],{},[5527,20014,20016],{"id":20015},"завдання-для-самоперевірки","Завдання для самоперевірки",[6131,20018,20019,20147,20248,20455],{},[5409,20020,20021,20024],{},[5413,20022,20023],{},"Що виведе програма?",[5544,20025,20027],{"className":5546,"code":20026,"language":5549,"meta":5551,"style":5551},"auto numbers = std::views::iota(1) | std::views::take(5);\nauto doubled = numbers | std::views::transform([](int n) { return n * 2; });\n\nfor (int n : doubled)\n    std::cout \u003C\u003C n \u003C\u003C \" \";\n",[5425,20028,20029,20069,20109,20113,20129],{"__ignoreMap":5551},[5555,20030,20031,20033,20035,20037,20039,20041,20043,20045,20047,20049,20051,20053,20055,20057,20059,20061,20063,20065,20067],{"class":5557,"line":5558},[5555,20032,8105],{"class":5595},[5555,20034,9790],{"class":5634},[5555,20036,6348],{"class":5603},[5555,20038,6359],{"class":5616},[5555,20040,5620],{"class":5603},[5555,20042,5434],{"class":5616},[5555,20044,5620],{"class":5603},[5555,20046,8492],{"class":5599},[5555,20048,5792],{"class":5603},[5555,20050,5642],{"class":5641},[5555,20052,8771],{"class":5603},[5555,20054,6359],{"class":5616},[5555,20056,5620],{"class":5603},[5555,20058,5434],{"class":5616},[5555,20060,5620],{"class":5603},[5555,20062,6407],{"class":5599},[5555,20064,5792],{"class":5603},[5555,20066,5663],{"class":5641},[5555,20068,5915],{"class":5603},[5555,20070,20071,20073,20075,20077,20079,20081,20083,20085,20087,20089,20091,20093,20095,20097,20099,20101,20103,20105,20107],{"class":5557,"line":5569},[5555,20072,8105],{"class":5595},[5555,20074,9481],{"class":5634},[5555,20076,6348],{"class":5603},[5555,20078,5635],{"class":5634},[5555,20080,7853],{"class":5603},[5555,20082,6359],{"class":5616},[5555,20084,5620],{"class":5603},[5555,20086,5434],{"class":5616},[5555,20088,5620],{"class":5603},[5555,20090,5936],{"class":5599},[5555,20092,6371],{"class":5603},[5555,20094,5596],{"class":5595},[5555,20096,5841],{"class":5634},[5555,20098,5844],{"class":5603},[5555,20100,5847],{"class":5561},[5555,20102,5841],{"class":5634},[5555,20104,5982],{"class":5603},[5555,20106,5648],{"class":5641},[5555,20108,5863],{"class":5603},[5555,20110,20111],{"class":5557,"line":5577},[5555,20112,5589],{"emptyLinePlaceholder":5588},[5555,20114,20115,20117,20119,20121,20123,20125,20127],{"class":5557,"line":5585},[5555,20116,17121],{"class":5561},[5555,20118,5439],{"class":5603},[5555,20120,5596],{"class":5595},[5555,20122,5841],{"class":5634},[5555,20124,6052],{"class":5603},[5555,20126,9614],{"class":5634},[5555,20128,5897],{"class":5603},[5555,20130,20131,20133,20135,20137,20139,20141,20143,20145],{"class":5557,"line":5592},[5555,20132,5617],{"class":5616},[5555,20134,5620],{"class":5603},[5555,20136,6067],{"class":5634},[5555,20138,6070],{"class":5603},[5555,20140,6073],{"class":5634},[5555,20142,6070],{"class":5603},[5555,20144,6078],{"class":5565},[5555,20146,5779],{"class":5603},[5409,20148,20149,20152],{},[5413,20150,20151],{},"Чи є помилка?",[5544,20153,20155],{"className":5546,"code":20154,"language":5549,"meta":5551,"style":5551},"auto createView()\n{\n    std::vector\u003Cint> vec = {1, 2, 3, 4, 5};\n    return vec | std::views::filter([](int n) { return n > 2; });\n}\n",[5425,20156,20157,20165,20169,20207,20244],{"__ignoreMap":5551},[5555,20158,20159,20161,20163],{"class":5557,"line":5558},[5555,20160,8105],{"class":5595},[5555,20162,8108],{"class":5599},[5555,20164,5604],{"class":5603},[5555,20166,20167],{"class":5557,"line":5569},[5555,20168,5610],{"class":5603},[5555,20170,20171,20173,20175,20177,20179,20181,20183,20185,20187,20189,20191,20193,20195,20197,20199,20201,20203,20205],{"class":5557,"line":5577},[5555,20172,5617],{"class":5616},[5555,20174,5620],{"class":5603},[5555,20176,5623],{"class":5616},[5555,20178,5626],{"class":5603},[5555,20180,5596],{"class":5595},[5555,20182,5631],{"class":5603},[5555,20184,6471],{"class":5634},[5555,20186,5638],{"class":5603},[5555,20188,5642],{"class":5641},[5555,20190,5645],{"class":5603},[5555,20192,5648],{"class":5641},[5555,20194,5645],{"class":5603},[5555,20196,5653],{"class":5641},[5555,20198,5645],{"class":5603},[5555,20200,5658],{"class":5641},[5555,20202,5645],{"class":5603},[5555,20204,5663],{"class":5641},[5555,20206,5745],{"class":5603},[5555,20208,20209,20211,20214,20216,20218,20220,20222,20224,20226,20228,20230,20232,20234,20236,20238,20240,20242],{"class":5557,"line":5585},[5555,20210,6113],{"class":5561},[5555,20212,20213],{"class":5634}," vec",[5555,20215,7853],{"class":5603},[5555,20217,6359],{"class":5616},[5555,20219,5620],{"class":5603},[5555,20221,5434],{"class":5616},[5555,20223,5620],{"class":5603},[5555,20225,6368],{"class":5599},[5555,20227,6371],{"class":5603},[5555,20229,5596],{"class":5595},[5555,20231,5841],{"class":5634},[5555,20233,5844],{"class":5603},[5555,20235,5847],{"class":5561},[5555,20237,5841],{"class":5634},[5555,20239,8179],{"class":5603},[5555,20241,5648],{"class":5641},[5555,20243,5863],{"class":5603},[5555,20245,20246],{"class":5557,"line":5592},[5555,20247,6124],{"class":5603},[5409,20249,20250,20253],{},[5413,20251,20252],{},"Який результат ефективніший?",[5544,20254,20256],{"className":5546,"code":20255,"language":5549,"meta":5551,"style":5551},"\u002F\u002F Варіант A\nstd::vector\u003Cint> result;\nfor (int n : data)\n    if (n % 2 == 0)\n        result.push_back(n * 2);\n\n\u002F\u002F Варіант B\nauto view = data\n    | std::views::filter([](int n) { return n % 2 == 0; })\n    | std::views::transform([](int n) { return n * 2; });\nstd::vector\u003Cint> result(view.begin(), view.end());\n",[5425,20257,20258,20263,20281,20297,20315,20334,20338,20343,20353,20389,20421],{"__ignoreMap":5551},[5555,20259,20260],{"class":5557,"line":5558},[5555,20261,20262],{"class":5757},"\u002F\u002F Варіант A\n",[5555,20264,20265,20267,20269,20271,20273,20275,20277,20279],{"class":5557,"line":5569},[5555,20266,6359],{"class":5616},[5555,20268,5620],{"class":5603},[5555,20270,5623],{"class":5634},[5555,20272,5626],{"class":5603},[5555,20274,5596],{"class":5595},[5555,20276,5631],{"class":5603},[5555,20278,6476],{"class":5634},[5555,20280,5779],{"class":5603},[5555,20282,20283,20285,20287,20289,20291,20293,20295],{"class":5557,"line":5577},[5555,20284,17121],{"class":5561},[5555,20286,5439],{"class":5603},[5555,20288,5596],{"class":5595},[5555,20290,5841],{"class":5634},[5555,20292,6052],{"class":5603},[5555,20294,14569],{"class":5634},[5555,20296,5897],{"class":5603},[5555,20298,20299,20301,20303,20305,20307,20309,20311,20313],{"class":5557,"line":5585},[5555,20300,5880],{"class":5561},[5555,20302,5439],{"class":5603},[5555,20304,6073],{"class":5634},[5555,20306,5852],{"class":5603},[5555,20308,5648],{"class":5641},[5555,20310,5857],{"class":5603},[5555,20312,5860],{"class":5641},[5555,20314,5897],{"class":5603},[5555,20316,20317,20320,20322,20324,20326,20328,20330,20332],{"class":5557,"line":5592},[5555,20318,20319],{"class":5634},"        result",[5555,20321,5428],{"class":5603},[5555,20323,7975],{"class":5599},[5555,20325,5792],{"class":5603},[5555,20327,6073],{"class":5634},[5555,20329,5982],{"class":5603},[5555,20331,5648],{"class":5641},[5555,20333,5915],{"class":5603},[5555,20335,20336],{"class":5557,"line":5607},[5555,20337,5589],{"emptyLinePlaceholder":5588},[5555,20339,20340],{"class":5557,"line":5613},[5555,20341,20342],{"class":5757},"\u002F\u002F Варіант B\n",[5555,20344,20345,20347,20349,20351],{"class":5557,"line":5694},[5555,20346,8105],{"class":5595},[5555,20348,8202],{"class":5634},[5555,20350,6348],{"class":5603},[5555,20352,16371],{"class":5634},[5555,20354,20355,20357,20359,20361,20363,20365,20367,20369,20371,20373,20375,20377,20379,20381,20383,20385,20387],{"class":5557,"line":5748},[5555,20356,11858],{"class":5603},[5555,20358,6359],{"class":5616},[5555,20360,5620],{"class":5603},[5555,20362,5434],{"class":5616},[5555,20364,5620],{"class":5603},[5555,20366,6368],{"class":5599},[5555,20368,6371],{"class":5603},[5555,20370,5596],{"class":5595},[5555,20372,5841],{"class":5634},[5555,20374,5844],{"class":5603},[5555,20376,5847],{"class":5561},[5555,20378,5841],{"class":5634},[5555,20380,5852],{"class":5603},[5555,20382,5648],{"class":5641},[5555,20384,5857],{"class":5603},[5555,20386,5860],{"class":5641},[5555,20388,6392],{"class":5603},[5555,20390,20391,20393,20395,20397,20399,20401,20403,20405,20407,20409,20411,20413,20415,20417,20419],{"class":5557,"line":5754},[5555,20392,11858],{"class":5603},[5555,20394,6359],{"class":5616},[5555,20396,5620],{"class":5603},[5555,20398,5434],{"class":5616},[5555,20400,5620],{"class":5603},[5555,20402,5936],{"class":5599},[5555,20404,6371],{"class":5603},[5555,20406,5596],{"class":5595},[5555,20408,5841],{"class":5634},[5555,20410,5844],{"class":5603},[5555,20412,5847],{"class":5561},[5555,20414,5841],{"class":5634},[5555,20416,5982],{"class":5603},[5555,20418,5648],{"class":5641},[5555,20420,5863],{"class":5603},[5555,20422,20423,20425,20427,20429,20431,20433,20435,20437,20439,20441,20443,20445,20447,20449,20451,20453],{"class":5557,"line":5761},[5555,20424,6359],{"class":5616},[5555,20426,5620],{"class":5603},[5555,20428,5623],{"class":5616},[5555,20430,5626],{"class":5603},[5555,20432,5596],{"class":5595},[5555,20434,5631],{"class":5603},[5555,20436,6476],{"class":5599},[5555,20438,5792],{"class":5603},[5555,20440,12708],{"class":5616},[5555,20442,5428],{"class":5603},[5555,20444,5799],{"class":5599},[5555,20446,5802],{"class":5603},[5555,20448,12708],{"class":5616},[5555,20450,5428],{"class":5603},[5555,20452,5809],{"class":5599},[5555,20454,6026],{"class":5603},[5409,20456,20457,20460],{},[5413,20458,20459],{},"Як виправити?",[5544,20461,20463],{"className":5546,"code":20462,"language":5549,"meta":5551,"style":5551},"auto view = std::views::iota(1, 11)\n          | std::views::filter([](int n) { return n % 2 == 0; });\n\nint third = view[2];  \u002F\u002F ← Помилка компіляції\n",[5425,20464,20465,20493,20530,20534],{"__ignoreMap":5551},[5555,20466,20467,20469,20471,20473,20475,20477,20479,20481,20483,20485,20487,20489,20491],{"class":5557,"line":5558},[5555,20468,8105],{"class":5595},[5555,20470,8202],{"class":5634},[5555,20472,6348],{"class":5603},[5555,20474,6359],{"class":5616},[5555,20476,5620],{"class":5603},[5555,20478,5434],{"class":5616},[5555,20480,5620],{"class":5603},[5555,20482,8492],{"class":5599},[5555,20484,5792],{"class":5603},[5555,20486,5642],{"class":5641},[5555,20488,5645],{"class":5603},[5555,20490,8694],{"class":5641},[5555,20492,5897],{"class":5603},[5555,20494,20495,20498,20500,20502,20504,20506,20508,20510,20512,20514,20516,20518,20520,20522,20524,20526,20528],{"class":5557,"line":5569},[5555,20496,20497],{"class":5603},"          | ",[5555,20499,6359],{"class":5616},[5555,20501,5620],{"class":5603},[5555,20503,5434],{"class":5616},[5555,20505,5620],{"class":5603},[5555,20507,6368],{"class":5599},[5555,20509,6371],{"class":5603},[5555,20511,5596],{"class":5595},[5555,20513,5841],{"class":5634},[5555,20515,5844],{"class":5603},[5555,20517,5847],{"class":5561},[5555,20519,5841],{"class":5634},[5555,20521,5852],{"class":5603},[5555,20523,5648],{"class":5641},[5555,20525,5857],{"class":5603},[5555,20527,5860],{"class":5641},[5555,20529,5863],{"class":5603},[5555,20531,20532],{"class":5557,"line":5577},[5555,20533,5589],{"emptyLinePlaceholder":5588},[5555,20535,20536,20538,20540,20542,20544,20546,20548,20551],{"class":5557,"line":5585},[5555,20537,5596],{"class":5595},[5555,20539,18096],{"class":5634},[5555,20541,6348],{"class":5603},[5555,20543,12708],{"class":5634},[5555,20545,18926],{"class":5603},[5555,20547,5648],{"class":5641},[5555,20549,20550],{"class":5603},"];",[5555,20552,20553],{"class":5757},"  \u002F\u002F ← Помилка компіляції\n",[20555,20556,20558],"details",{"summary":20557},"Відповіді",[6131,20559,20560,20581,20597,20623],{},[5409,20561,20562,20565,20566,20569,20570,20573,20574,20577,20578,20580],{},[5413,20563,20564],{},"Відповідь:"," Виведе ",[5425,20567,20568],{},"2 4 6 8 10",". ",[5425,20571,20572],{},"iota(1)"," генерує 1, 2, 3, 4, 5..., ",[5425,20575,20576],{},"take(5)"," бере перші 5, ",[5425,20579,5936],{}," множить на 2.",[5409,20582,20583,5451,20585,5451,20588,20590,20591,20593,20594,20596],{},[5413,20584,20564],{},[5413,20586,20587],{},"Так, небезпечна помилка!",[5425,20589,6471],{}," — локальна змінна, знищується при виході з функції. View зберігає посилання на знищений вектор → невизначена поведінка. ",[5413,20592,17457],{}," повертати ",[5425,20595,7664],{}," або приймати range як параметр.",[5409,20598,20599,5451,20601,20604,20605,20616,20619,20620,20622],{},[5413,20600,20564],{},[5413,20602,20603],{},"Варіант B ефективніший"," (у більшості випадків):",[5406,20606,20607,20610],{},[5409,20608,20609],{},"Варіант A: push_back може викликати реалокації",[5409,20611,20612,20613,11564],{},"Варіант B: матеріалізація одразу виділяє правильний розмір (якщо range підтримує ",[5425,20614,20615],{},"size()",[20617,20618],"br",{},"Але якщо ",[5425,20621,14569],{}," дуже великий, а потрібно лише кілька елементів, варіант B значно виграє через lazy evaluation.",[5409,20624,20625,5451,20627,20629,20630,20633,20634,20636],{},[5413,20626,20564],{},[5425,20628,6368],{}," не підтримує random access (оператор ",[5425,20631,20632],{},"[]","). ",[5413,20635,17457],{},[5544,20637,20639],{"className":5546,"code":20638,"language":5549,"meta":5551,"style":5551},"\u002F\u002F Варіант 1: ітерація\nauto it = view.begin();\nstd::advance(it, 2);\nint third = *it;\n\n\u002F\u002F Варіант 2: матеріалізація\nstd::vector\u003Cint> vec(view.begin(), view.end());\nint third = vec[2];\n",[5425,20640,20641,20646,20662,20680,20692,20696,20701,20735],{"__ignoreMap":5551},[5555,20642,20643],{"class":5557,"line":5558},[5555,20644,20645],{"class":5757},"\u002F\u002F Варіант 1: ітерація\n",[5555,20647,20648,20650,20652,20654,20656,20658,20660],{"class":5557,"line":5569},[5555,20649,8105],{"class":5595},[5555,20651,6852],{"class":5634},[5555,20653,6348],{"class":5603},[5555,20655,12708],{"class":5634},[5555,20657,5428],{"class":5603},[5555,20659,5799],{"class":5599},[5555,20661,8210],{"class":5603},[5555,20663,20664,20666,20668,20670,20672,20674,20676,20678],{"class":5557,"line":5577},[5555,20665,6359],{"class":5616},[5555,20667,5620],{"class":5603},[5555,20669,18079],{"class":5599},[5555,20671,5792],{"class":5603},[5555,20673,13907],{"class":5634},[5555,20675,5645],{"class":5603},[5555,20677,5648],{"class":5641},[5555,20679,5915],{"class":5603},[5555,20681,20682,20684,20686,20688,20690],{"class":5557,"line":5585},[5555,20683,5596],{"class":5595},[5555,20685,18096],{"class":5634},[5555,20687,18099],{"class":5603},[5555,20689,13907],{"class":5634},[5555,20691,5779],{"class":5603},[5555,20693,20694],{"class":5557,"line":5592},[5555,20695,5589],{"emptyLinePlaceholder":5588},[5555,20697,20698],{"class":5557,"line":5607},[5555,20699,20700],{"class":5757},"\u002F\u002F Варіант 2: матеріалізація\n",[5555,20702,20703,20705,20707,20709,20711,20713,20715,20717,20719,20721,20723,20725,20727,20729,20731,20733],{"class":5557,"line":5613},[5555,20704,6359],{"class":5616},[5555,20706,5620],{"class":5603},[5555,20708,5623],{"class":5616},[5555,20710,5626],{"class":5603},[5555,20712,5596],{"class":5595},[5555,20714,5631],{"class":5603},[5555,20716,6471],{"class":5599},[5555,20718,5792],{"class":5603},[5555,20720,12708],{"class":5616},[5555,20722,5428],{"class":5603},[5555,20724,5799],{"class":5599},[5555,20726,5802],{"class":5603},[5555,20728,12708],{"class":5616},[5555,20730,5428],{"class":5603},[5555,20732,5809],{"class":5599},[5555,20734,6026],{"class":5603},[5555,20736,20737,20739,20741,20743,20745,20747,20749],{"class":5557,"line":5694},[5555,20738,5596],{"class":5595},[5555,20740,18096],{"class":5634},[5555,20742,6348],{"class":5603},[5555,20744,6471],{"class":5634},[5555,20746,18926],{"class":5603},[5555,20748,5648],{"class":5641},[5555,20750,20751],{"class":5603},"];\n",[20753,20754,20755],"style",{},"html pre.shiki code .s8xlr, html code.shiki .s8xlr{--shiki-light:#AF00DB;--shiki-default:#C586C0;--shiki-dark:#C586C0}html pre.shiki code .sbdoH, html code.shiki .sbdoH{--shiki-light:#A31515;--shiki-default:#CE9178;--shiki-dark:#CE9178}html pre.shiki code .su1O8, html code.shiki .su1O8{--shiki-light:#0000FF;--shiki-default:#569CD6;--shiki-dark:#569CD6}html pre.shiki code .s8Opu, html code.shiki .s8Opu{--shiki-light:#795E26;--shiki-default:#DCDCAA;--shiki-dark:#DCDCAA}html pre.shiki code .sHH4Y, html code.shiki .sHH4Y{--shiki-light:#000000;--shiki-default:#D4D4D4;--shiki-dark:#D4D4D4}html pre.shiki code .sN1BT, html code.shiki .sN1BT{--shiki-light:#267F99;--shiki-default:#4EC9B0;--shiki-dark:#4EC9B0}html pre.shiki code .siwwj, html code.shiki .siwwj{--shiki-light:#001080;--shiki-default:#9CDCFE;--shiki-dark:#9CDCFE}html pre.shiki code .sJj4R, html code.shiki .sJj4R{--shiki-light:#098658;--shiki-default:#B5CEA8;--shiki-dark:#B5CEA8}html pre.shiki code .spJ8K, html code.shiki .spJ8K{--shiki-light:#008000;--shiki-default:#6A9955;--shiki-dark:#6A9955}html pre.shiki code .sjcCO, html code.shiki .sjcCO{--shiki-light:#EE0000;--shiki-default:#D7BA7D;--shiki-dark:#D7BA7D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":5551,"searchDepth":5569,"depth":5569,"links":20757},[20758,20762,20767,20772,20780,20781,20783,20787,20791,20792,20796,20801,20806,20814,20815],{"id":5529,"depth":5569,"text":5530,"children":20759},[20760,20761],{"id":5541,"depth":5577,"text":5542},{"id":6180,"depth":5577,"text":6181},{"id":6718,"depth":5569,"text":6719,"children":20763},[20764,20765,20766],{"id":6733,"depth":5577,"text":6734},{"id":6974,"depth":5577,"text":6975},{"id":7228,"depth":5577,"text":7229},{"id":7678,"depth":5569,"text":7679,"children":20768},[20769,20771],{"id":7729,"depth":5577,"text":20770},"Базовий приклад: std::views::filter",{"id":8218,"depth":5577,"text":8219},{"id":8363,"depth":5569,"text":8364,"children":20773},[20774,20776,20778],{"id":8374,"depth":5577,"text":20775},"1️⃣ Factory Views — створюють діапазони з нічого",{"id":8857,"depth":5577,"text":20777},"2️⃣ Adaptor Views — трансформують існуючі діапазони",{"id":10789,"depth":5577,"text":20779},"3️⃣ All View — перетворення контейнера в view",{"id":11066,"depth":5569,"text":11067},{"id":11336,"depth":5569,"text":20782},"Композиція views: piping оператор |",{"id":12217,"depth":5569,"text":12218,"children":20784},[20785,20786],{"id":12230,"depth":5577,"text":12231},{"id":12814,"depth":5577,"text":12815},{"id":13035,"depth":5569,"text":13036,"children":20788},[20789,20790],{"id":13046,"depth":5577,"text":13047},{"id":13558,"depth":5577,"text":13559},{"id":14093,"depth":5569,"text":14094},{"id":15794,"depth":5569,"text":15795,"children":20793},[20794,20795],{"id":15798,"depth":5577,"text":15799},{"id":16705,"depth":5577,"text":16706},{"id":17244,"depth":5569,"text":17245,"children":20797},[20798,20799,20800],{"id":17248,"depth":5577,"text":17249},{"id":17680,"depth":5577,"text":17681},{"id":17914,"depth":5577,"text":17915},{"id":18124,"depth":5569,"text":18125,"children":20802},[20803,20804,20805],{"id":18128,"depth":5577,"text":18129},{"id":18426,"depth":5577,"text":18427},{"id":18869,"depth":5577,"text":18870},{"id":19119,"depth":5569,"text":19120,"children":20807},[20808,20810,20812],{"id":19126,"depth":5577,"text":20809},"std::ranges::to — конвертація в контейнер",{"id":19392,"depth":5577,"text":20811},"std::ranges::zip — паралельна ітерація",{"id":19609,"depth":5577,"text":20813},"std::ranges::chunk — розбиття на шматки",{"id":19814,"depth":5569,"text":19815},{"id":20015,"depth":5569,"text":20016},"Сучасний підхід до обробки послідовностей: lazy evaluation, композиція views, piping оператор, range-based алгоритми. Від STL algorithms до функціонального стилю з ranges.","md",null,{},{"title":1753,"description":20816},"accsn2aw2V9R_LECIrPFRErXlnXj5T2mCF4rQruthj8",[20823,20825],{"title":1749,"path":1750,"stem":1751,"description":20824,"children":-1},"Big O нотація та аналіз складності алгоритмів. Детальний розбір сортувань: бульбашкою, вибіркою, вставками та швидкого сортування. Покрокові трасування, порівняння та практика.",{"title":1757,"path":1758,"stem":1759,"description":20826,"children":-1},"Лінійний та бінарний пошук у масивах C++. Покрокові трасування, аналіз складності O(n) та O(log n). Передумови бінарного пошуку. Рекурсивна та ітеративна реалізації. Практичні задачі.",1793537615299]