我正在学习STL和设计模式。 我想知道是否有任何文档或链接可以解释如何在 STL 中实现设计模式 我做了谷歌但无法获得太多数据
我希望你的意思是,“哪些设计模式可以在STL中被识别”。
STL堆栈是一个容器适配器。适配器是一种设计模式。迭代器也是一种设计模式。 STL函数对象与命令模式相关。
图案:
这些模式的实现方式与面向对象设计中的实现方式非常不同。 Josuttis 写道“STL 概念与面向对象编程的原始思想相矛盾”。这就是导致您的问题出现混乱的原因。
迭代器模式在STL中被大量使用。
STL 大量使用模板。 GoF 称之为参数化类型。模板对于自定义设计模式解决方案或提出新的直观解决方案非常有用。 (有关更多详细信息,请参阅“设计模式:可重用面向对象软件的元素”中的“继承与参数化类型”部分)。熟悉 STL(和 boost)的好处是,它们是学习 C++ 模板(和元编程)的良好来源,而 C++ 模板又可用于设计更好的设计。
我认为你的问题是设计模式没有在STL中实现。 它们可以用 C++ 实现并使用 STL 的容器和算法,但 STL 和设计模式没有任何其他方式相关。
我的建议是通过阅读 Nicolai Josuttis 的优秀书籍 C++ 标准库:教程和参考 或 STL 教程和参考指南 来了解 STL。 这将有助于了解 STL 可以为您做什么。 然后利用您对 STL 的了解,深入研究在 C++ 中实现设计模式。
从C++11开始,我们得到了三种智能指针,即shared_ptr、unique_ptr和weak_ptr,它们背后的模式是:代理模式。
std::vector<bool>::reference
和 std::bitset::reference
也是 代理模式 的示例
我从现代 STL 的头脑中意识到的是: