我有一些混淆真假问题 我想任何人都回答他们,并证明答案对我来说,因为我已经做了搜索STL是C++核心的一部分吗?
1 - STL是C的核心的一部分++编程语言
2 - 的std :: string是STL (I猜T)
3的一部分 - 迭代器的一个目的是连接容器和算法(I猜T)
4 - 列表元素按顺序存储在内存中。 (我猜F)
5-矢量元素顺序存储在内存中。 (我猜F)
我有一些混淆真假问题 我想任何人都回答他们,并证明答案对我来说,因为我已经做了搜索STL是C++核心的一部分吗?
1 - STL是C的核心的一部分++编程语言
2 - 的std :: string是STL (I猜T)
3的一部分 - 迭代器的一个目的是连接容器和算法(I猜T)
4 - 列表元素按顺序存储在内存中。 (我猜F)
5-矢量元素顺序存储在内存中。 (我猜F)
(1),(2)都依赖于你的定义。 “STL”在技术上不是标准C++的一部分,但其中足够大的部分被改写成原来的标准,名称被卡住了。但是,是的,模板化容器通常被认为是STL是官方标准C++库的一部分。 “核心”可能是一个延伸;一个编译器实际上可以让它们脱离独立实现,但是你几乎永远不会发现自己为独立实现编写代码,所以区别并不重要。
(3)
他们是否有其他用途?
是的,这是一个目的。正如Steve Jessop在下面指出的那样,他们还将像流一样的东西连接到算法上,这些东西可以被迭代而不需要真正的容器。
(4)您是指std::list
?那你是对的。除非你想玩语义;它们按顺序存储,但可能不连续。 (5)在98年出版的原始标准中,这应该是可能的。在'03'的修改标准中,这被改为yes。在这两种情况下,来自(4)的语义参数也可以应用
回答你在(3)中的修辞问题是“是”。它们还用于将算法与可迭代但不是容器的东西(如流)连接起来;-)所以这是一个目的,但不是唯一的目的。 – 2011-06-11 08:28:19
@Steve:够公平的,我已经忘记了那些。 – 2011-06-11 08:32:28
同样作为历史的一点,我认为'string'不是STL第一版本的一部分,而是在SGI被完成/稳定/放弃/无论他们称之为什么之前被SGI纳入STL。当然,它是目前文档形式的一部分(http://www.sgi.com/tech/stl/)。因此,在STL的“标准C++”定义中“技术上不属于标准C++”的部分,“string”处于。 – 2011-06-11 08:34:09
这里是我的答案:
False
True
True
False
True
我的答案:
你必须小心定义。问题在于STL已经进入了常用的用途,但并没有达到标准。从技术上讲,STL是在标准和标准使用STL的大块(但不是全部)之前定义的。所以在技术上STL不是标准的一部分。请参阅原始STL文档所在的www.sgi.com/tech/stl/(由STL的创建者编写)。在这里你会找到Rope(和其他类),但这不是C++标准的一部分(尽管它(绳子)将会很快)。 – 2011-06-11 15:07:02
我认为ALS给出的答案是正确的。更详细地说明你的第一个问题 - 从在C书思考++由Bruce Eckel的 -
有经常有点C++标准库中的容器和算法的混淆,并称为STL实体。标准模板库是当他在1994年春季在加利福尼亚圣地亚哥举行的会议上将他的图书馆提交给C++标准委员会时使用的Alex Stepanov(当时在惠普工作)的名字。该名称被卡住了,特别是在惠普决定将其提供给公众下载。同时,委员会将其整合到标准C++库中,进行了大量更改。 STL的开发继续在Silicon Graphics(SGI;参见http://www.sgi.com/Technology/STL)。 SGI STL在许多细微点上偏离了标准C++库。因此,虽然这是一种流行的误解,但C++标准并未“包含”STL。它可能有点混乱,因为标准C++库中的容器和算法与SGI STL具有相同的根(通常是相同的名称)。在这本书中,我会说:“标准C++库”或“标准库容器”或类似的东西,将避免术语“STL”。
虽然你的答案并不包括所有问题,但它是一个有趣的信息,所以+1 – 2011-06-11 08:12:05
我没有回答所有问题,因为我在第一句话中提到我认为ALS给出的答案是正确的。谢谢你提出了我的答案:) – Sumod 2011-06-11 08:15:15
(5):它保证自C++ 03,23.2.4/1,“ 矢量的元素连续存储,这意味着...” – 2011-06-11 08:29:58
是的,你是正确 - 我已经解决了这个问题。谢谢 – 2011-06-11 09:36:19
std :: string是而不是标准模板库的一部分。字符串,STL和其他一些其他的东西共同构成了C++标准库。 STL包含容器,迭代器,算法和函数对象。它具有特定的含义,因为它具有特定的来源:SGI的模板库。
你的意思是“STL”是什么_exactly_?人们松散地使用它来表示稍微不同的事情,正确回答您的问题取决于同意“STL”的含义。 – 2011-06-11 08:02:57
不错的问题。我的答案是T,T,T,F ?, T – 2011-06-11 08:03:12
对于5的回答为真 – Zuljin 2011-06-11 08:03:29