{"id":24374558,"url":"https://github.com/icingworld/ww-stl","last_synced_at":"2025-10-25T15:50:15.664Z","repository":{"id":272729391,"uuid":"917514906","full_name":"Icingworld/WW-STL","owner":"Icingworld","description":"A personal implementation of STL containers in C++. 手撕C++ STL容器。","archived":false,"fork":false,"pushed_at":"2025-02-21T17:27:44.000Z","size":595,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-15T21:15:33.045Z","etag":null,"topics":["cpp","implementation-of-data-structures","stl","stl-containers"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Icingworld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-16T06:11:04.000Z","updated_at":"2025-03-19T02:53:34.000Z","dependencies_parsed_at":"2025-01-16T10:01:55.887Z","dependency_job_id":"eaf3d352-537e-461d-9032-f9a5dfc34be8","html_url":"https://github.com/Icingworld/WW-STL","commit_stats":null,"previous_names":["icingworld/ww-stl"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Icingworld%2FWW-STL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Icingworld%2FWW-STL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Icingworld%2FWW-STL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Icingworld%2FWW-STL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Icingworld","download_url":"https://codeload.github.com/Icingworld/WW-STL/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249153950,"owners_count":21221330,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","implementation-of-data-structures","stl","stl-containers"],"created_at":"2025-01-19T05:40:41.982Z","updated_at":"2025-10-25T15:50:15.599Z","avatar_url":"https://github.com/Icingworld.png","language":"C++","readme":"# WW-STL\n\n![C++](https://img.shields.io/badge/language-C++-blue)\n![Standard](https://img.shields.io/badge/standard-C++11-green)\n![MIT License](https://img.shields.io/github/license/Icingworld/WW-STL?color=red)\n\n![Last commit](https://img.shields.io/github/last-commit/Icingworld/WW-STL?color=yellow)\n![Release](https://img.shields.io/github/v/release/Icingworld/WW-STL?label=release)\n![Test](https://img.shields.io/github/actions/workflow/status/Icingworld/WW-STL/stl_test.yml)\n\n## 一、简介\n\n本仓库为作者在学习 STL 的过程中，对 C++11 标准下 STL 容器的一种实现。欢迎学习交流！\n\n根据 C++11 标准（详情见参考文献 [2]），本仓库包含了以下内容的实现：\n\n+ 底层功能：\n\n| 标准名 | 本仓库名 | 说明 | 完成情况 |\n| :---: | :---: | :---: | :---: |\n| memory | ww_memory.h | 分配器部分 | 完成 |\n| iterator | ww_iterator.h | 迭代器 | 完成 |\n| algorithm | ww_algorithm.h | 算法heap部分 | 完成 |\n| - | ww_hash.h | 哈希 | 完成 |\n| - | ww_hashtable.h | 哈希表 | 完成 |\n| - | ww_rbtree.h | 红黑树 | 完成 |\n\n+ 序列型容器：\n\n| 标准名 | 本仓库名 | 完成情况 |\n| :---: | :---: | :---: |\n| array | ww_array.h | 完成 |\n| vector | ww_vector.h | 完成 |\n| deque | ww_deque.h | 完成 |\n| forward_list | ww_forward_list.h | 完成 |\n| list | ww_list.h | 完成 |\n\n+ 关联型容器:\n\n| 标准名 | 本仓库名 | 完成情况 |\n| :---: | :---: | :---: |\n| set | ww_set.h | 完成 |\n| multiset | ww_set.h | 完成 |\n| map | ww_map.h | 完成 |\n| multimap | ww_map.h | 完成 |\n\n+ 无序关联型容器：\n\n| 标准名 | 本仓库名 | 完成情况 |\n| :---: | :---: | :---: |\n| unordered_set | ww_unordered_set.h | 完成 |\n| unordered_multiset | ww_unordered_set.h | 完成 |\n| unordered_map | ww_unordered_map.h | 完成 |\n| unordered_multimap | ww_unordered_map.h | 完成 |\n\n+ 容器适配器\n\n| 标准名 | 本仓库名 | 完成情况 |\n| :---: | :---: | :---: |\n| stack | ww_stack.h | 完成 |\n| queue | ww_queue.h | 完成 |\n| priority_queue | ww_queue.h | 完成 |\n\n## 二、设计理念\n\n1. 本实现基于 c++11 标准，在不使用更高版本 C++ 特性的情况下，遵循 STL 设计理念，实现 STL 容器相关接口，使得本实现适配 C++ 标准库\n\n2. 本实现采用单头文件形式，编译时不需要包含源码文件\n\n3. 本实现不做过多的抽象封装，在实现 STL 功能的情况下尽可能简洁明了\n\n4. 本实现从《STL源码剖析》（见参考文献 [1]）开始，部分参考 MSVC（见参考文献 [3]） 的 STL 算法设计，将《STL源码剖析》中未完成的接口实现\n\n5. 本实现仅关注容器实现部分，算法部分使用标准库算法\n\n## 三、项目结构\n\n| 目录 | 说明 |\n| :---: | :---: |\n| stl/ | WW-STL实现 |\n| test/ | 测试用例 |\n| benchmark/ | 性能测试用例 |\n| third-party/ | 第三方库 |\n\n## 四、使用方法\n\n### 1. 使用WW-STL\n\n本实现全部位于`wwstl`命名空间下\n\n1. 包含头文件\n\n    ```c++\n    #include \"ww_vector.h\"\n    ```\n\n2. 使用`wwstl`命名空间\n\n    ```c++\n    using namespace wwstl;\n    ```\n\n3. 像使用标准库一样使用它\n\n### 2. 运行仓库测试用例\n\n本仓库使用 Google Test 和 Google Benchmark 进行测试，glone 仓库后，安装子模块来进行测试：\n\n```bash\ngit submodule update --init --recursive\n```\n\n等待子模块下载完成，使用 cmake 编译测试用例：\n\n#### 2.1 Google Test\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake .. -DENABLE_TEST=ON\nmake -j4\n```\n\n运行测试用例：\n\n```bash\n./test/test_all\n```\n\n#### 2.2 Google Benchmark\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake .. -DENABLE_BENCHMARK=ON\nmake -j4\n```\n\n运行性能测试用例：\n\n```bash\n./benchmark/benchmark_all\n```\n\n## 参考文献\n\n[1] 侯捷. STL源码剖析[M]. 北京: 机械工业出版社, 2002.\n\n[2] cppreference. cppreference.com[EB/OL]. [2025-01-16]. \u003chttps://zh.cppreference.com\u003e, 2025-01-16.\n\n[3] Microsoft. STL[EB/OL]. [2025-01-16]. \u003chttps://github.com/microsoft/STL\u003e, 2025-01-16.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficingworld%2Fww-stl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficingworld%2Fww-stl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficingworld%2Fww-stl/lists"}