【发布时间】:2011-08-23 18:33:12
【问题描述】:
(当我说 STL 时,我指的是围绕容器、迭代器、算法和仿函数的模板库。)
这个问题是在认为std::string 主要表现得像一个普通的容器,有begin 和end 函数(包括迭代器)、size 函数以及将所有这些用于普通 STL 算法的可能性之后想到的通过其迭代器处理容器/范围(例如transform、sort、find 等)。
但同时,它本身并不是一个容器,因为它不适合存储任意数据的容器。此外,它主要通过成员函数对包含的数据进行操作,如substr、find_first_of 等,而真正的容器不这样做,让算法来处理。
此外,cplusplus reference site 和 C++ 标准并未将 std::string 与真正的容器一起列出,而是在一个不同的类别中。
但是,在 SGI's STL site 上,basic_string(以及随后的 string typedef)与另一个容器一起被提及,basic_string reference site 声明它属于“容器”类别。
现在我的问题是,string 实际上是 STL 的一部分还是它本身是一个独特的库?
如果它现在属于STL,它与Stepanov开发的原始STL有什么不同吗?
【问题讨论】:
-
除了对历史的好奇之外,现在谁在乎 STL?
-
@ildjarn:嗯,我喜欢积累知识。 :P 另外,看到那个小
history标签了吗? :) 我只是对这样的东西感兴趣,所以我要求它。 -
啊,公平,我实际上没有看到
history标签:-] -
什么是 STL,如果不是 SGI 站点定义的?
-
STL 是否开始使用
std命名空间?这不是 C++ 语言标准明确禁止的吗?