如何创建自定义 STL 容器
设计行为类似于 STL 容器的新容器时,存在一些准则来确保兼容性。
模板和类型定义
容器应声明为具有适当类型的通用模板类定义:
-
typedef 定义:
- 分配器类型
- 值类型
- 引用类型
- 指针类型
- 区别type
- 大小类型
-
类声明:
- 具有适当迭代器类别的迭代器类型(例如 std::random_access_iterator_tag )
- 常量迭代器类型
迭代器
迭代器应提供:
-
类型定义:
-
构造函数:
- 赋值运算符
- 比较运算符
- 自增和自减运算符(可选)
- 加法和减法运算符(可选)
- 随机访问运算符(例如运算符[()])(可选)
- 取消引用运算符(运算符*() 和运算符->())
容器类
容器类应该包括:
-
构造函数:
- 作业运算符
- 比较运算符(可选)
- 开始和结束迭代器
- 反向迭代器(可选)
-
元素访问函数:
- 前()和后() (可选)
- push_front() 和 push_back() (可选)
- pop_front() 和 pop_back() (可选)
- operator[]() (可选)
-
插入和删除函数:
- emplace()(可选)
- insert()(可选)
- erase()(可选)
- clear() (可选)
-
作业函数:
-
实用程序函数:
- size()
- max_size()
- empty()
-
分配器访问函数:
测试
为了确保容器正常运行,请使用带有哨兵对象(如测试器)的测试工具来验证其行为。该工具可以检查内存泄漏和资源管理问题。
以上是如何设计和实现符合 STL 的自定义容器?的详细内容。更多信息请关注PHP中文网其他相关文章!