编写适合STL的C++容器
Write C++ container that fits neatly into STL
我想以一种非常适合STL的风格编写一个容器类。它的外观和行为应该像标准STL容器一样。
是否有手册、报告、问答;A、 等等,描述了如何编写具有这些功能的代码?这样的文本应该折衷STL的设计原则、陷阱、编码约定等等。
PS:这个问题在一定程度上受到了这个问题的启发:具有动态项目大小的C++向量,尽管这个想法与模板类无关。
这不是很难(对于简单的数据结构)。您应该阅读C++标准中关于容器的章节。您可以在这里下载即将推出的C++1x标准的草案:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/#mailing2011-04
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf
在编写迭代器时,您可能需要使用boost::iterator_facade。
http://www.boost.org/doc/libs/1_46_1/libs/iterator/doc/iterator_facade.html
我建议阅读赫伯·萨特的《Unstrung》。这是对std::string
的深入研究,涵盖了哪些是正确的,哪些本可以做得更好。我非常重视他对C++编程问题的看法。这是一本很长的书,但我保证你会学到一些关于以C++标准库的风格编写类的有用的东西(以及关于编写类的一般内容)。
你也可以看看Scott Meyers的有效STL。这本书将很好地概述标准库容器对用户的期望。有了这样的见解将帮助您自己编写更好的容器类。
我建议阅读Josuttis,C++标准库:教程和参考。它对STL背后的原理给出了清晰易读的解释。
除了user763305推荐的,我还将研究Austern、泛型编程和STL:使用和扩展C++标准模板库。它讨论了这类问题,并为STL中的概念提供了很好的参考。
- 在提升multi_index容器中,是否定义了"default index"?
- 用于访问容器<T>数据成员的正确 API
- Eigen如何在容器循环中干净地附加矩阵
- 模板专用化(按容器):value_type
- 关联容器的下界复杂性:成员函数与非成员函数
- 更多constexpr容器是否需要mark_immutable_if_consexpr
- 在STL容器中使用模板类
- 当有分配器意识的容器被复制/移动时,反弹分配器是否被复制/移走
- 检查函数返回类型是否与STL容器类型值相同
- STL算法函数在多个一维容器上的使用
- 如何将带有自定义对象的容器从C++传递到QML
- 在没有未定义行为的情况下实现类似std::vector的容器
- 将 BASE 派生类存储在同一容器中
- 为什么 STL 容器适配器堆栈中的 top 返回常量引用?
- 在C++中迭代 2D 容器的最干净方法
- 将线程中的数据存储到全局容器的最佳方法?
- 如果我真的真的想从 STL 容器继承,并且我继承构造函数并删除新运算符,会发生什么?
- 使用带有C++对象和标准库容器的插件系统
- 使用 std::index_sequence 初始化具有固定大小数组成员的 POD 结构容器
- 我可以用字符串变量而不是它的名字创建容器吗? C++