STL中使用的设计模式(标准模板库)

时间:2010-04-23 12:34:44

标签: c++ design-patterns stl

我正在学习STL和设计模式。 我想知道是否有任何文档或链接解释了如何在STL中实现设计模式 我做谷歌但无法获得太多数据

6 个答案:

答案 0 :(得分:13)

我希望你的意思是“在STL中可以识别出哪些设计模式”。

STL堆栈是容器适配器。适配器是一种设计模式。迭代器也是一种设计模式。 STL函数对象与命令模式相关。

模式:

  1. 适配器(容器适配器)
    • 队列
    • 优先队列
  2. 迭代
  3. 命令+适配器(功能适配器)
  4. Iterator + Adapter(迭代器适配器)
    • 反向迭代器
    • 插入迭代器
    • 流迭代器
  5. 模板方法(使用用户指定函数的STL算法)
  6. 哪个创作模式? (分配器)
  7. 这些模式的实现方式与面向对象设计中的实现方式截然不同。 Josuttis写道“STL概念与面向对象编程的原始思想相矛盾”。这就是导致你的问题混乱的原因。

答案 1 :(得分:1)

我认为您的问题是设计模式不是在STL中实现的 。它们可以用C ++实现,并使用STL的容器和算法,但STL和设计模式不能以任何其他方式相关。

我的建议是通过阅读Nicolai Josuttis' excellent book The C++ Standard Library: A Tutorial and ReferenceSTL 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>::referencestd::bitset::reference也是代理模式

的示例