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

C++ STL是c+核心的一部分吗+;?,c++,stl,C++,Stl,我有一些混淆的真假问题 我希望有人能回答他们,并为我证明答案,因为我已经做了一次搜索 1—STL是C++程序设计语言的核心部分 2-std::string是STL的一部分(我猜是T) 3-迭代器的一个用途是连接容器和算法(我猜是T) 4-列表的元素顺序存储在内存中(我猜是F) 5-向量的元素顺序存储在内存中(我猜是F)以下是我的答案: False True True False True 我的答案是: False True True False True 真的,没有

我有一些混淆的真假问题 我希望有人能回答他们,并为我证明答案,因为我已经做了一次搜索

1—STL是C++程序设计语言

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

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

4-列表的元素顺序存储在内存中(我猜是F)

5-向量的元素顺序存储在内存中(我猜是F)

以下是我的答案:

False  
True  
True
False  
True
我的答案是:

False  
True  
True
False  
True
真的,没有STL 是的,有文献记载到处都是
  • 没错,听起来很合理
  • False——不,这是一个链表
  • 是的,它是一个基于数组的列表

  • 我认为ALS给出的答案是正确的。要详细说明你的第一个问题- 从C++的书籍思维看Bruce Eckel -

    <>标准C++库中的容器和算法之间经常存在混淆,而实体称为STL。标准模板库是Alex Stepanov(他当时在休利特帕卡德工作)的名字,他在1994春季在加利福尼亚圣地亚哥的会议上向C++标准委员会提交了他的图书馆。这个名字一直存在,尤其是在惠普决定将其公开下载后。同时,委员会将其集成到标准C++库中,进行了大量的修改。STL的开发在Silicon Graphics(SGI;参见)继续进行。SGI STL在许多微妙的点上偏离标准C++库。因此,尽管这是一个普遍的误解,但C++标准并不包括“STL”。它可能有点混乱,因为标准C++库中的容器和算法具有与SGI STL相同的根(通常是相同的名称)。在这本书中,我会说“标准C++库”或“标准库容器”或类似的东西,并避免“STL”< /P>。
  • 它是标准库的一部分,但其实现不包含在标准中
  • 可能是的
  • 可能是的,但它们的主要目的是从一些容器实现中抽象程序员,并泛化所有集合
  • 不,这根本不能保证!从100分之95确定它不在您的实现中
  • (1) 和(2)都取决于你的定义。“STL”在技术上不是标准C++的一部分,但它的大部分都被修改为原始标准,该名称被卡住。但是,是的,模板容器通常被重新定义为STL是官方标准C++库的一部分。“核心”可能是一个延伸;编译器实际上可以将它们排除在独立实现之外,但您几乎永远不会发现自己在为独立实现编写代码,因此区别其实并不重要

    (3) 它们还有其他用途吗?是的,这是一个目的。正如Steve Jessop在下面指出的,它们还将诸如流之类的东西连接到算法上,流可以在不作为容器的情况下进行迭代

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


    (5) 在1998年发布的原始标准中,这可能是一个错误。在03年修订的标准中,这一点更改为“是”。在这两种情况下,也可以应用(4)中的语义参数

    std::string不是标准模板库的一部分。字符串、STL和其他一些杂项共同构成C++标准库。STL包括容器、迭代器、算法和函数对象。它有一个特定的含义,因为它有一个特定的来源:SGI的模板库。

    你所说的“STL”到底是什么意思?人们松散地用它来表示稍有不同的事情,正确回答你的问题取决于对“STL”的意思达成一致。问得好。我的答案是T,T,T,F?,虽然你的答案没有涵盖所有问题,但这是一个有趣的信息,因此+1我没有回答所有问题,因为我在第一句话中提到,我认为ALS给出的答案是正确的。谢谢你给出我的答案:)你在(3)中反问句的答案是“是”。它们还用于将算法与可移植但不是容器的东西连接起来,例如流;-)所以这是一个目的,但不是唯一的目的。@Steve:公平地说,我已经忘记了这些。从历史的角度来看,我相信
    string
    不是STL第一个版本的一部分,而是SGI在STL最终确定/稳定/放弃/不管他们怎么称呼它之前将其纳入STL。当然,它是当前文档表单()的一部分。因此,在STL的“技术上不属于C++ C++标准”的定义中,<>代码>字符串>代码>。注意:并非所有的STL容器都在C++标准中。代码>rope和
    slist
    是示例。
    std::list
    的元素不是按顺序存储的。它们存储在内存分配器决定放置它们的任何位置。列表的最后一个元素很可能(而且通常会)在内存中的第一个元素之前。(5):这是有保证的,因为C++03,23.2.4/1,“向量的元素是连续存储的,这意味着……”您必须小心定义。问题是STL已经进入通用,但不是标准。从技术上讲,STL是在标准之前定义的,标准使用了大量STL(但不是全部)。所以从技术上讲,STL不是标准的一部分。请参见www.sgi.com/tech/stl/原始stl文档所在地(由stl的创建者编写)。这里你会找到绳子(和其他类),但这不是C++标准的一部分(尽管我)