C ++ STL标准有变化吗?

时间:2011-04-08 07:12:10

标签: c++ stl

每当我使用STL在C ++中实现某些东西时,我一直虔诚地使用SGI的Standard Template Library Programmer's Guide(STLPG)作为参考手册。直到昨天它一直没有让我失望,但昨天我在工作中与 std :: vector 合作并与我的一位同事进行配对编程,他告诉我使用 assign 方法。我不认识这种对我来说不寻常的方法,所以我开始挖掘STLPG的std::vector部分并且没有提到任何赋值方法。我的同事把我指向了std::vector上的cpluplus.com页面,并且看到它和其他一些方法一起,例如 at ,我也从未见过。

这让我很困惑,所以我在这个问题上去了中世纪并挖到了* / usr / include / c ++ / 4.1.2 / bits / stl_vector.h *版权所有Hewlett-Packard Company 1994和Silicon Graphics Computer Systems,Inc 1996年,它包含了分配和没有任何特别评论的实现,提到了为什么在最近的版权所有者自己的文档中省略了它们。

有没有比我自己更有经验的人可以阐明社区存在这些差异的原因以及我可以信赖哪些在线参考手册符合所有现代STL实施?

4 个答案:

答案 0 :(得分:3)

SGI的STL是一个库,大部分包含在ISO C ++标准库中。一些部分被排除在外,并且从其他来源添加了许多其他库组件。

并且,正如您已经注意到的那样,已经进行了一些更改以改进或协调不同组件的接口。

更大的变化将在今年晚些时候(希望)采用新的C ++ 11标准,直到现在被称为C++0x

答案 1 :(得分:3)

我通常使用C++ Reference,主要是因为如果您搜索c++ std vector之类的内容,Google会首先点击它。但我也发现那里提供的信息是准确的。

如有疑问,请参考最新的working draft of the C++ Standard。 (例如,回答你的初始问题第23.3.6节[向量])当然这是C ++ 0x,可能还没有完全支持,所以你可能想检查一个较旧的草稿(即C +之前的最后一个) +03发布了。)

答案 2 :(得分:1)

SGI STL于1997年实施,C ++标准于1998年出版。

如果您需要可靠的STL接口参考,请查找C ++标准2003.或者如果您不介意升级,最新的C ++草案位于http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf

特别是,如果你转到N3242第23.3.6节,你知道有分配和at。

template <class InputIterator>
void assign(InputIterator first, InputIterator last);

效果:

erase(begin(), end());
insert(begin(), first, last);

void assign(size_type n, const T& t);

效果:

erase(begin(), end());
insert(begin(), n, t);

const_reference at(size_type n) const;
reference at(size_type n);

答案 3 :(得分:1)

SGI STL是标准中的基础,并不完全相同。很简单,自1994年以来已经很长一段时间了,比如十七年,所以可以预料到,在此期间,有些事情发生了变化。我个人使用MSDN作为我的标准库参考。