(当我说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中有所不同吗?
history
标签 :-] - ildjarnstd
命名空间?这难道不是被C++语言标准明确禁止的吗? - Lightness Races in Orbit