项目简介
jrSTL是一个专注于学习与实现C++11标准下STL容器库、算法库和智能指针库的项目。它覆盖了各类容器与容器适配器、<algorithm>
头文件中的泛型算法、<iterator>
头文件里的迭代器相关内容、无状态简易空间配置器以及智能指针库。此外,还实现了AVL平衡二叉树作为set/map的底层存储结构,支持对xxx/multixxx的统一操作,并且实现了KMP算法和多种排序算法。
项目的主要特性和功能
- 容器库:实现C++11标准的所有容器与容器适配器,包括顺序容器(array、vector等)、关联容器(set/multiset等)和容器适配器(stack、queue等)。
- 算法库:实现
<algorithm>
头文件中的所有泛型算法,如copy、sort、rotate等。 - 迭代器:实现C++11标准下的所有迭代器类型和迭代器适配器,包括输入、输出、前向、双向和随机迭代器。
- 智能指针:实现C++11标准的智能指针库,含unique_ptr、shared_ptr和weak_ptr,支持RAII封装和循环引用检测。
- 空间配置器:实现无状态的简易空间配置器,封装new/delete操作。
- AVL平衡二叉树:作为set/map的底层存储结构,提供高效的插入、删除和查找操作。
- KMP算法:search算法中,若分配缓存成功,采用KMP算法进行模式匹配。
- 多种排序算法:sort算法根据递归深度和剩余元素个数,动态选择快速排序、归并排序或插入排序。
安装使用步骤
- 下载源码:已假设用户下载了项目的源码文件。
- 编译项目:使用CMake或其他编译工具编译项目,确保所有依赖库和头文件正确配置。
- 编写代码:在项目中包含jrSTL的头文件,使用jrSTL库中的容器、算法和智能指针进行开发。
- 编译和运行:编译并运行程序,验证功能正确性。
注意事项
- 编译器需支持C++11标准。
- 使用jrSTL库时,要遵循C++11标准,确保编译器和库文件支持。
- 本项目实现了C++11标准下的部分STL库功能,并非完整实现。
- AVL平衡二叉树作为set/map的底层存储结构,与标准库实现可能不同。
- KMP算法和多种排序算法未进行性能优化。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】