- 重载 + ,实现 "123" + "456" == "123456"
- 重载 - ,实现 "123456" - "123" == "456"
- 重载 = ,实现 int 转 hstring 字符串和 hstring 的赋值深拷贝
- 重载 std::cout ,实现 hstring 的输出显示
- 重载 [] ,实现 hstring 的下标读
- 改数据,实现 "123456" 修改 23 为 abc,得到 "1abc456"
- 查数据,"123456" 查 23 得到 23 的位置 1,使用KMP算法
- 支持 int、char*、hstring 构造
- 使用内存池作为缓冲,减少内存分配频率
- ⬜️ 支持 float 类型
- ⬜️ 支持 std::string 类型
- ⬜️ 重载 = 的浅拷贝 (必要性?)
- ⬜️ [] 下标访问的越界处理
- 链表链接链接内存块
- 支持内存池大小的动态扩展,默认扩展大小翻倍
- 支持内存池块的分配和回收
- RAII内存池的创建和销毁
- ⬜️ 处理 block_size 过小的情况,即
block_size < sizeof(char*)
- ⬜️ 回收内存时,处理不是从mempool分配出去的内存
- 💎
*(char**)ptr
作为链表的next指针, 需要保存分配的总地址空间,以用于释放。 而不是直接释放空闲块的地址 - 💎 扩展内存池大小时,需要考虑原空间是否还有剩余
- 使用c++变参模板重载,实现终端打印函数