我正在学习STL和设计模式。 我想知道是否有任何文档或链接解释了如何在STL中实现设计模式 我做谷歌但无法获得太多数据
答案 0 :(得分:13)
我希望你的意思是“在STL中可以识别出哪些设计模式”。
STL堆栈是容器适配器。适配器是一种设计模式。迭代器也是一种设计模式。 STL函数对象与命令模式相关。
模式:
这些模式的实现方式与面向对象设计中的实现方式截然不同。 Josuttis写道“STL概念与面向对象编程的原始思想相矛盾”。这就是导致你的问题混乱的原因。
答案 1 :(得分:1)
我认为您的问题是设计模式不是在STL中实现的 。它们可以用C ++实现,并使用STL的容器和算法,但STL和设计模式不能以任何其他方式相关。
我的建议是通过阅读Nicolai Josuttis' excellent book The C++ Standard Library: A Tutorial and Reference或STL Tutorial and Reference Guide等内容来了解STL。这将有助于了解STL可以为您做些什么。然后使用您对STL的了解,深入研究在C ++中实现设计模式。
答案 2 :(得分:1)
STL中使用了Iterator pattern。
答案 3 :(得分:1)
STL广泛使用模板。 GoF调用此参数化类型。模板可用于自定义设计模式解决方案或提供新的直观解决方案。 (有关更多详细信息,请参阅“Design Patterns: Elements of Reusable Object-Oriented Software”中的“继承与参数化类型”部分)。熟悉STL(和boost)的好处在于它们是学习C ++模板(和元编程)的好资源,而C ++又可以用来设计更好的设计。
答案 4 :(得分:0)
从 C ++ 11 ,我们得到了三种smart pointer,即shared_ptr,unique_ptr和weak_ptr,它们背后的模式是:代理模式
答案 5 :(得分:0)
std::vector<bool>::reference
和std::bitset::reference
也是代理模式