我想以一种非常适合 STL 的风格编写一个容器类。它的外观和行为就好像它在标准 STL 容器中一样。
是否有手册、报告、问答等描述如何使用这些功能编写代码?这样的文本应该损害 STL 的设计原则、陷阱、编码约定等。
PS:这个问题的部分灵感来自于:C++ vector with dynamic item size,尽管这个想法与模板类无关。
我想以一种非常适合 STL 的风格编写一个容器类。它的外观和行为就好像它在标准 STL 容器中一样。
是否有手册、报告、问答等描述如何使用这些功能编写代码?这样的文本应该损害 STL 的设计原则、陷阱、编码约定等。
PS:这个问题的部分灵感来自于:C++ vector with dynamic item size,尽管这个想法与模板类无关。
这不是很困难(对于简单的数据结构)。您应该阅读 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::iteratoror_facade。
http://www.boost.org/doc/libs/1_46_1/libs/iterator/doc/iterator_facade.html
我推荐阅读 Herb Sutter 的“Unstrung”。这是对 的深入研究std::string
,涵盖了正确的地方和可以做得更好的地方。我非常重视他对 C++ 编程问题的看法。这是一篇很长的文章,但我保证你会学到一些关于以 C++ 标准库的风格编写类的有用知识(以及关于编写一般类的知识)。
您还可以查看 Scott Meyers 的Effective STL。这本书将很好地概述对标准库容器用户的期望。拥有这种洞察力将帮助您自己编写更好的容器类。
我推荐阅读 Josuttis,C++ 标准库:教程和参考。它对 STL 背后的原理给出了清晰易读的解释。
除了 user763305 推荐的那本书,我还会看看 Austern、Generic Programmming 和 STL:使用和扩展 C++ 标准模板库。它讨论了这些问题,并为 STL 中的概念提供了很好的参考。