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
我认为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>。
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++标准的一部分(尽管我)