Data Structs and Algorithms(DSA)
版本号:14.2.0,与 CMakeLists.txt 同步
- 第一位:架构
- 第二位:api
- 第三位:小版本号
我自己实现的各种数据结构和算法的模板,采用 C++20 语言标准,统一在 DSA 命名空间中,支持跨平台
- Asan(DEBUG 模式需要)
- 容器元素必须支持
operator<<
(DEBUG 模式需要)
- 编译器:gcc version 14.2.0 (Ubuntu 14.2.0-4ubuntu2~24.04)
- 调试器:GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git
- CMake:cmake version 3.31.1
- Graphviz(DEBUG 模式需要)
- 编译器:Visual Studio 2022 (v143)
以 Linux 平台为例,Windows 打开DSA.sln
用 Visual Studio 2022 Build 即可:
- 按照 C++ 开发的一般规范,声明以及模板卸载头文件即 .h 文件中,实现代码写在 .cpp 源文件中
- 增加源文件需要在
src/CMakeLists.txt
文件中的“添加库源文件”中添加 - 如果增加了头文件目录,需要在
src/CMakeLists.txt
文件中的“安装头文件”中添加 - 执行
tool/build_debug.sh
进行构建调试版(VSCode task: Build debug),会启用 AddressSanitizer(asan) 有助于内存分析 - 执行
tool/build_release.sh
进行构建发布版(VSCode task: Build release) - 构建好的头文件、库文件和文档都在目标目录
dist
目录下 - 执行
tool/clean.sh
可以对项目进行 clean(VSCode task: Clean)
- 在
test
目录下编写单元测试代码,命名规范为:test_xxx.cpp
- 在项目构建好后,执行
tool/run_test.sh
脚本(Linux)即可运行单元测试(VSCode task: Run test) - 可以运行 Python3 脚本进行测试,执行
tool/run_python_test.sh
脚本(Windows 下为tool/run_python_test.bat
)即可(VSCode task: Run python test,与 Asan 不太兼容,故只支持 RELEASE 模式构建的),Python 脚本的执行入口为test/python/main.py
- Windows 下用 VS 打开项目解决方案
DSA.sln
后将 test 项目设置为启动项目
- Vtune:使用 Vtune 工具进行性能分析(推荐)
- gperftools:(与 Asan 不太兼容,故只支持 RELEASE 模式构建的)对于 Linux 环境下,安装 gperftools,运行
tool/run_test_with_gperftools.sh
会生成性能分析报告dsa-test.prof
及dsa-test.pdf
(VSCode task:Run test on Linux with gperftools)
- 《数据结构》3rd-邓俊辉
- http://en.cppreference.com/w/
- 《C++ Primer》5th-Stanley B. Lippman, Josée Lajoie, Barbara E. Moo
- 《Effective C++》3rd-Scott Meyers
- 《数据结构》2nd-陈越
- 《2019年数据结构考研复习指导》-王道论坛组编
- 《Database System Concepts》6th-Abraham Silberschatz, Henry F. Korth, S. Sudarshan
- 《STL 源码剖析》-侯捷
- 《C++ 内存管理》-侯捷 10.《Computer Systems A Programmer's Perspective》3e-Randal E.Bryant, David R. O'Hallaron
- 实现稀疏集
- 整理一下编译规则,在 Windows 下也使用 CMake,参考 SCGF 项目
- 将其用在 SCGF 项目中
- 实现树状数组(区间)
- 实现 KD 树
- 优化树的打印方法
- 哈希表容器元素用指针(桶)而不是原始元素
- 全组合算法(参考 《Lua 程序设计》4th-p6.6)