C++标准库主要就指STL吗?

来源:百度知道 编辑:UC知道 时间:2024/05/26 16:33:07
STL在标准库中占多大比例?
除了STL还有一些什么?
谢谢了, 比如这个IOstream Library 当初是哪个公司开发的?

还是像linux一样,是一些黑客开发的?

然后微软和borland公司就只管开发编译器,不用开发这些标准库? 直接拿来主义就可以?

或者要开发的话也只是开发自己的MFC,VCL这样的库?

STL包括两部分内容:容器和算法。(重要的还有融合这二者的迭代器)
容器,即存放数据的地方。比如array等。
在STL中,容器分为两类:序列式容器和关联式容器。
序列式容器,其中的元素不一定有序,但都可以被排序。如:vector、list、deque、stack、queue、heap、priority_queue、slist;
关联式容器,内部结构基本上是一颗平衡二叉树。所谓关联,指每个元素都有一个键值和一个实值,元素按照一定的规则存放。如:RB-tree、set、map、multiset、multimap、hashtable、hash_set、hash_map、hash_multiset、hash_multimap。
下面各选取一个作为说明。
vector:它是一个动态分配存储空间的容器。区别于c++中的array,array分配的空间是静态的,分配之后不能被改变,而vector会自动重分配(扩展)空间。
set:其内部元素会根据元素的键值自动被排序。区别于map,它的键值就是实值,而map可以同时拥有不同的键值和实值。
算法,如排序,复制……以及个容器特定的算法。这点不用过多介绍,主要看下面迭代器的内容。
迭代器是STL的精髓,我们这样描述它:迭代器提供了一种方法,使它能够按照顺序访问某个容器所含的各个元素,但无需暴露该容器的内部结构。它将容器和算法分开,好让这二者独立设计。

标准库包括:

C Library
IOstream Library
Strings library
STL Containers
STL Algorithms
Miscellaneous

其中大部分函数是用模板实现的。

关于STL的定义,不同人理解不一。现在有人直接把 STL 定义为“the standard library”,但通常而言, STL 指的是标准库的容器、迭代器、算法这几个部分,而这远不是C++标准库的全部内容。

在C++开始标准化之时,一个名叫SGI STL的库被标准委员会投入极大关注,后来被吸收进C++标准库,主要构成 C++ 标准库的容