{"id":31552260,"url":"https://github.com/ascendho/dstfw","last_synced_at":"2025-10-04T19:30:00.139Z","repository":{"id":315766783,"uuid":"1060764485","full_name":"ascendho/DStFW","owner":"ascendho","description":"Modern C++ Syntax Implementations of the Pseudocode in Data Structures the Fun Way (from No Starch Press)","archived":false,"fork":false,"pushed_at":"2025-09-28T03:38:27.000Z","size":5013,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-28T05:40:19.069Z","etag":null,"topics":["data-structures","no-starch-press"],"latest_commit_sha":null,"homepage":"https://nostarch.com/data-structures-fun-way","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ascendho.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-20T14:46:25.000Z","updated_at":"2025-09-28T03:38:30.000Z","dependencies_parsed_at":"2025-09-20T16:47:24.636Z","dependency_job_id":null,"html_url":"https://github.com/ascendho/DStFW","commit_stats":null,"previous_names":["ascendho/dsfw"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ascendho/DStFW","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascendho%2FDStFW","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascendho%2FDStFW/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascendho%2FDStFW/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascendho%2FDStFW/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ascendho","download_url":"https://codeload.github.com/ascendho/DStFW/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascendho%2FDStFW/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278365515,"owners_count":25975086,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-structures","no-starch-press"],"created_at":"2025-10-04T19:29:58.444Z","updated_at":"2025-10-04T19:30:00.133Z","avatar_url":"https://github.com/ascendho.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"## 介绍\n\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/bookcover.jpeg\" height=\"400\"\u003e\n\u003c/div\u003e\n\n这本通俗易懂且趣味十足的书籍，从数据结构的视角深入讲解计算思维，通过示意图、伪代码与风趣的类比，你将理解数据的结构如何驱动算法运算，不仅能掌握数据结构的构建方法，更能明确它们的使用场景与方式。本书将帮助你扎实掌握 15 种以上关键数据结构的实现与运用，涵盖栈、队列、缓存，到布隆过滤器、跳表、图等各类结构。你可以通过 “在咖啡馆排队” 理解链表，通过 “梳理夏季奥运会历史” 掌握哈希表，还能通过 “规整厨房橱柜” 学会四叉树。\n\n\n\n## 目标\n\n1. 目前市面上多数数据结构书籍侧重链表、栈、队列等基础结构，而对字典树、优先队列、堆、网格、空间树、缓存、布隆过滤器、跳表等进阶结构涉及较少，而实际上这些数据结构应用广泛：字典树用于搜索引擎补全与数据库索引；优先队列和堆应用于操作系统调度与大数据处理；网格支撑地理信息系统和游戏渲染；空间树关键用于 3D 建模和无人机避障；缓存提升 Web 与 Redis 响应效率；布隆过滤器适用于分布式系统判重与垃圾邮件过滤；跳表是 Redis 有序集合的核心实现。此书以精炼篇幅介绍这些主流结构，补足了传统教材的不足。\n2. 不同于原书的伪代码描述，本项目采用现代 C++ 语法完整实现所有数据结构，旨在系统提升自身的 C++ 语言编程能力，深入理解面向对象设计、内存管理、模板编程等核心概念，并借助 AI 工具和谷歌测试框架 GTest 编写单元测试代码，以此完成对数据结构功能的验证。同时，项目还涵盖了 CMake 编译构建系统的实际应用，包括如何组织项目结构、编写 CMakeLists.txt 以及管理多文件工程。此外，在实践中也将掌握 hpp 与 tpp 头文件的组织方式及其在模板类实现中的关键作用，增强工程化实现能力。\n\n\n\n## 问题日志与笔记\n\n1. 每个章节的根目录下都包含一份 **README** 文件，其内容为**问题日志**，主要记录在使用 C++ 实现数据结构过程中遇到的问题及相应解决方案；\n2. docs 文件夹内存放着各章节的笔记，主要记录数据结构本身的核心知识与关键要点。\n\n\n\n## 构建方式\n\n先 `cd` 进入相应的根目录，如 `10 - Hash Tables`，然后执行如下操作：\n\n```cmake\n$ mkdir build\n$ cd build\n$ cmake ..      \t\t   // 调用CMake工具，去上级目录寻找CMakeLists.txt文件\n$ make -j8      \t\t   // 调用Make工具来执行编译，-j表示并行，8表示最多使用8个CPU核心\n$ ./bin/test_chaining      // 运行测试用例\n$ ctest --verbose          // 运行CTest\n```\n\n重新编译：\n\n```cmake\n$ make clean \u0026\u0026 make\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fascendho%2Fdstfw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fascendho%2Fdstfw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fascendho%2Fdstfw/lists"}