STL是c ++核心的一部分吗?

Ahm*_*med 2 c++ stl

我有一些令人困惑的真假问题,我希望有人回答这些问题并为我证明答案,因为我已经进行了搜索

1 - STL是c ++编程语言核心的一部分

2 - std :: string是STL的一部分(我猜T)

3 - 迭代器的一个目的是连接容器和算法(我猜T)

4 - 列表的元素按顺序存储在存储器中.(我猜F)

5 - 矢量元素顺序存储在存储器中.(我猜F)

Den*_*ose 5

(1)和(2)都取决于你的定义."STL"在技术上不是标准C++的一部分,但是它的足够大部分被改编成了名称所坚持的原始标准.但是,模板化容器通常被称为STL是官方标准C++库的一部分."核心"可能是一个延伸; 一个编译器实际上可以让它们脱离独立实现,但你几乎永远不会发现自己编写独立实现,所以区别并不重要.

(3)他们是否有任何其他目的?是的,这是一个目的.正如Steve Jessop在下面指出的那样,他们还将诸如流之类的东西连接到算法上,这些东西可以在不实际成为容器的情况下进行迭代.

(4)你指的是std::list?那你是对的.除非你想玩语义; 它们按顺序存储,但可能不是连续存储的.

(5)在1998年出版的原始标准中,这可能是一个可能.在'03的修改标准中,这变为了是.在这两种情况下,也可以应用(4)中的语义参数