我有一些令人困惑的对与错问题
我希望有人回答他们并为我证明答案,因为我已经搜索过
1-STL是C++编程语言核心的一部分
2-std::string是STL (我猜是T)的一部分
3-迭代器的目的之一是连接容器和算法(我猜是T)
4-列表的元素顺序存储在内存中。 (我猜是F)
5- vector 的元素顺序存储在内存中。 (我猜是F)
最佳答案
(1)和(2)都取决于您的定义。从技术上讲,“STL”不是标准C++的一部分,但其中的很大一部分已被改编为原始标准,以至于这个名称被卡住了。但是,是的,通常用作STL的模板化容器是官方标准C++库的一部分。 “核心”可能是一个延伸。编译器实际上可以使它们脱离独立的实现,但是您几乎永远不会发现自己为独立的实现编写代码,因此区别实际上并不重要。
(3)它们还有其他目的吗?是的,那是一个目的。正如史蒂夫·杰索普(Steve Jessop)在下面指出的那样,它们还将诸如流之类的东西连接到算法上,而这些东西实际上不需要容器就可以迭代。
(4)您是指std::list
吗?那你是对的。除非你想玩语义学;否则它们是顺序存储的,但可能不是连续存储的。
(5)在98年发布的原始标准中,这可能是一个可能。在'03的修订标准中,将其更改为"is"。在这两种情况下,也可以应用(4)中的语义参数