# My STL **Repository Path**: hdu-a-chao_admin/my-stl ## Basic Information - **Project Name**: My STL - **Description**: C++模拟实现SGI版本的STL标准模板库,实现Contaners、Iterator、Algorithm、Adept、Alloc六大部件,基于内存池设计分配器,结合C++11版本的容器更新,实现string、list、vector、priority_queue、deque、stack、queue、map、set、unordered_map、unordered_set - **Primary Language**: C++ - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-02-28 - **Last Updated**: 2024-07-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cpp-my-stl #### 介绍 C++模拟实现STL,主要基于C++98推出的最初版本的STL设计风格,结合C++11新增的容器实现,参考书籍是侯捷老师的《STL源码剖析》。 由于新版本的C++标准库取消了内存池分配器机制,所以本项目所采用的内存池分配器机制,对于标准库的STL是有一定互补性的,经过测试,在对大量碎片化数据的进行存储时,本项目的容器(list、map、unordered_map)都具有更优秀的效率和容量,是标准STL的数倍,但对于连续性存储的容器,本项目的容器(vector、deque)的存储效率却比标准STL低数倍,这是符合预期的。 #### 软件架构 基于SGI版本设计的STL,包含STL六大组件(Container、Algorithm、Iterator、Functor、Adapter、Allocator),包含底层数据结构RBTree、Hash,包含string、list、vector、priority_queue、deque、stack、queue、map、set、unordered_map、unordered_set。 #### 安装教程 1. git clone 仓库链接 2. Linux环境直接在my-stl目录下通过makefile编译链接动态库: - 编译:make compile - 运行:make run - 清除:make clean 3. windows环境在my-stl目录下的运行win_load.sh脚本编译链接生成动态库,将生成的动态库放入 C:\\Windows\\system32目录中,然后便可以去test目录下找到可执行文件。 #### 使用说明 1. 当安装生成动态链接库之后,便可以直接将本项目的STL作为外部库调用,使用库文件时需在编译时指定头文件路径,若是使用本项目的测试文件,需要指定动态库路径,也可以直接在项目主目录下调用CMake编译。 2. 使用test目录下的测试文件,可以对项目进行编写好的功能测试和性能测试。 #### 参与贡献:hdu-a-chao