什么是c ++标准库的设计原则?

时间:2011-06-26 04:04:03

标签: c++ standard-library

所以standard c++ library主要包含大致 7 类别,

使它成为标准的理由/原型是什么?

BTW,哪个类别的套接字编程相关的东西属于c ++标准库?

2 个答案:

答案 0 :(得分:5)

我不知道说C ++标准库有一个统一的设计原则(可能是面向对象的编程,正交性或类型协方差?)是有道理的,但它确实有一些技术设计目标。根据Bjarne Stroustrup(引自C ++编程语言,第429-430页),STL执行以下操作:

  
      
  1. 支持语言功能,例如内存管理和运行时类型信息。

  2.   
  3. 提供有关语言的实现定义方面的信息,例如   最大浮动值。

  4.   
  5. 为每个系统提供无法以语言本身最佳实现的功能,例如sqrt()和memmove()。

  6.   
  7. 提供程序员可依赖的非原始工具以实现可移植性,例如列表,映射,排序函数和I / O流。

  8.   
  9. 提供扩展其提供的工具的框架,例如允许用户以内置类型的I / O风格提供用户定义类型的I / O的约定和支持工具。

  10.   
  11. 为其他图书馆提供共同基础。

  12.   

答案 1 :(得分:3)

  

使它成为标准的理由/原型是什么?

使C ++ 98成为标准的相同原理/原型。

在90年代,许多编译器编写者都在扩展C语言。这通常涉及向C语言添加面向对象的特性(因此称为“C with Classes”)。这是互联网的早期阶段,许多参与编译器编写和语言扩展的人开始标准化事物。

标准库是该过程的一部分。 Iostreams来自某些开发者。大多数标准库被称为“STL”的原因是因为标准模板库是一个广泛分布的原型C ++库,它基于一个新功能,在C ++编译器中进行轮次:模板。

最终,ISO委员会决定聚在一起,形成一个真正的标准。他们拿走了人们称之为“C ++”的所有内容,解决了一些不相容的问题(iostream在字符类型上变得模糊,虽然他们忘记了那些东西),并最终同意了ISO标准。


至于“套接字编程”,它不是C ++标准库的一部分。因此,它不属于任何这些类别。

这些类别存在的唯一原因是因为这就是标准库中的内容。 C ++ 0x将添加更多类别(线程是一个很大的类别)。