# TEXT_STL **Repository Path**: xhb0127/text_-stl ## Basic Information - **Project Name**: TEXT_STL - **Description**: practice STL and NET - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-30 - **Last Updated**: 2026-01-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TEXT_STL ## 介绍 TEXT_STL 是一个 C++ 标准模板库(STL)练习项目,包含了多种经典数据结构的实现以及 STL 相关组件的实践代码。通过本项目,学习者可以深入理解 STL 的内部实现原理,掌握模板编程技巧,以及了解常用数据结构的底层实现。 ## 软件架构 本项目涵盖了以下核心内容: ### 数据结构实现 - **B树** - 基础B树数据结构实现,支持插入、查找和打印操作 - **B+树** - B+树实现,支持高效的范围查询,包含叶节点链表 - **红黑树** - 自平衡二叉搜索树,支持RED/BLACK颜色标记 - **AVL树** - 严格平衡的二叉搜索树,支持左旋、右旋和平衡因子计算 - **普通树与二叉树** - 基础树结构,支持DFS和BFS遍历算法 ### STL组件实现 - **内存分配器** - 包含 `__malloc_alloc_template`、`simple_alloc`、`debug_alloc` 和 `__default_alloc_template` 等多种自定义内存分配器实现 - **队列容器** - 基于 `std::deque` 的 `my_queue` 队列模板实现 - **内存池** - 使用 `shared_ptr` 的 `memopool` 内存池实现 ### C++11/14 新特性实践 - **右值引用与移动语义** - 完美转发(`std::forward`)、变长模板参数(`Args&&...`) - **模板特化** - 类模板偏特化、完全特化和函数模板特化 ### 多线程编程 - **POSIX线程封装** - C++风格的 `posix` 线程类封装 - **线程同步** - `mutexlocker` 互斥锁与 `autolocker` 自动锁模板(RAII风格) - **信号处理** - Linux `sigaction` 信号机制演示 ### 网络编程 - **TCP服务器** - 包含 `ip_address` 和 `tcpserver` 网络编程基础组件 ## 安装教程 ### 环境要求 - GCC 4.8+ 或支持 C++11 的编译器 - Linux/Unix 系统(部分功能依赖 POSIX 接口) - CMake 或 Make 构建工具 ### 编译方式 使用 g++ 单独编译每个源文件: ```bash # 编译单个示例 g++ -std=c++11 -o demo1 demo1.cpp # 编译需要pthread的示例 g++ -std=c++11 -lpthread -o posix posix.cpp g++ -std=c++11 -lpthread -o mutexlock mutexlock.cpp ``` 或使用 CMake: ```bash mkdir build cd build cmake .. make ``` ## 使用说明 ### 运行示例程序 每个 `.cpp` 文件都是一个独立的可执行程序: ```bash # 运行 B+树示例 g++ -std=c++11 B+.cpp -o bplus_tree ./bplus_tree # 运行模板特化示例 g++ -std=c++11 demo1.cpp -o demo1 ./demo1 # 运行内存池示例 g++ -std=c++11 demo6.cpp -o demo6 ./demo6 ``` ### 核心功能演示 **B+树插入与查询:** ```cpp BPlusTree tree; tree.insert(10); tree.insert(20); tree.search(10); // 返回 true tree.print(); // 打印树结构 ``` **AVL树插入与平衡:** ```cpp AVL_tree avl; avl.insert(avl.root, 10); avl.insert(avl.root, 20); avl.inorder(avl.root); // 中序遍历 ``` **自定义内存分配器:** ```cpp simple_alloc alloc; int* p = simple_alloc::allocate(10); // 使用内存... simple_alloc::deallocate(p, 10); ``` **线程安全锁(RAII风格):** ```cpp mutexlocker lock; autolocker2 auto_lock(&lock); // 离开作用域自动解锁 ``` **C++11 变长模板参数:** ```cpp print(1, 2.5, "hello", 'c'); // 递归展开打印所有参数 ``` ## 项目结构 ``` text_-stl/ ├── B+.cpp # B+树实现 ├── B.cpp # B树实现 ├── c11.cpp # C++11新特性(右值引用、变长模板) ├── demo1.cpp # 类模板特化 ├── demo2.cpp # 静态成员变量特化 ├── demo3.cpp # 函数模板特化 ├── demo4.cpp # malloc_alloc内存分配器 ├── demo5.cpp # simple_alloc和debug_alloc ├── demo6.cpp # default_alloc内存池 ├── demo7.cpp # 其他示例 ├── demo8.cpp # 队列容器模板 ├── mutexlock.cpp # 线程同步组件 ├── net1.cpp # TCP网络编程 ├── posix.cpp # POSIX线程封装 ├── red-blacktree.cpp # 红黑树 ├── sigaction.cpp # 信号处理 ├── tree.cpp # 树结构实现(普通树、二叉树、AVL树) ├── LICENSE # 许可证 ├── README.md # 中文说明文档 └── README.en.md # 英文说明文档 ``` ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 相关资源 - [Gitee 官方博客](https://blog.gitee.com) - [Gitee 优秀开源项目](https://gitee.com/explore) - [GVP 最有价值开源项目](https://gitee.com/gvp) - [Gitee 使用手册](https://gitee.com/help)