编写适合STL的C++容器

Write C++ container that fits neatly into STL

本文关键字:C++ 容器 STL      更新时间:2023-10-16

我想以一种非常适合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中的概念提供了很好的参考。