答案 0 :(得分:5)
我不知道说C ++标准库有一个统一的设计原则(可能是面向对象的编程,正交性或类型协方差?)是有道理的,但它确实有一些技术设计目标。根据Bjarne Stroustrup(引自C ++编程语言,第429-430页),STL执行以下操作:
支持语言功能,例如内存管理和运行时类型信息。
提供有关语言的实现定义方面的信息,例如 最大浮动值。
为每个系统提供无法以语言本身最佳实现的功能,例如sqrt()和memmove()。
提供程序员可依赖的非原始工具以实现可移植性,例如列表,映射,排序函数和I / O流。
提供扩展其提供的工具的框架,例如允许用户以内置类型的I / O风格提供用户定义类型的I / O的约定和支持工具。
- 醇>
为其他图书馆提供共同基础。
答案 1 :(得分:3)
使它成为标准的理由/原型是什么?
使C ++ 98成为标准的相同原理/原型。
在90年代,许多编译器编写者都在扩展C语言。这通常涉及向C语言添加面向对象的特性(因此称为“C with Classes”)。这是互联网的早期阶段,许多参与编译器编写和语言扩展的人开始标准化事物。
标准库是该过程的一部分。 Iostreams来自某些开发者。大多数标准库被称为“STL”的原因是因为标准模板库是一个广泛分布的原型C ++库,它基于一个新功能,在C ++编译器中进行轮次:模板。
最终,ISO委员会决定聚在一起,形成一个真正的标准。他们拿走了人们称之为“C ++”的所有内容,解决了一些不相容的问题(iostream在字符类型上变得模糊,虽然他们忘记了那些东西),并最终同意了ISO标准。
至于“套接字编程”,它不是C ++标准库的一部分。因此,它不属于任何这些类别。
这些类别存在的唯一原因是因为这就是标准库中的内容。 C ++ 0x将添加更多类别(线程是一个很大的类别)。