[英]Are there any STL headers which are not part of the C++ Standard Library?
我知道某些C ++标准库标头源自STL,例如vector
。 但是我找不到标准库仍未合并的STL标头的最新列表。 它们存在吗?
PS:我想列出它们,并且想知道是否所有主要的实现都包括它们或从哪里获得它们。
请注意,这是按功能分解的函数,而不是按标头分解的函数,因为它似乎更有用。
如果我们查看SGI的STL文档,则会发现以下内容:
slist
已重命名为std::forward_list
。 bit_vector
已由std::vector<bool>
的模板规范代替。 这样的实现可以(不是必须)以bit_vector
的方式优化空间。 hash_set
和朋友现在的拼写就像unordered_set
。 功能似乎是相同的。 (感谢TC!) rope
不见了。 标准库中没有等效的数据结构。 我找不到与此主题相关的WG21讨论。 sequence_buffer
,因为它主要用于向后插入rope
。 random_sample
和random_sample_n
。 原因在N3547中讨论:
在WG21在Sophia-Antipolis会议上进行审议之后,Austern更新了该提案。 除其他更改外,他撤回了[
random_sample
和random_sample_n
]:“ LWG担心他们对标准化可能不够了解。 。 。 。 为TR2提出这些算法可能是适当的” [Aus08b]。 讨论的Wiki分钟同样简短:“ Bjarne觉得理由不足。 PJ担心我们会弄错。 劳伦斯担心人们会自己滚蛋并弄错了。 TR2的理想人选” [LWG08]。 随后对这些拟议算法的投票获得了可靠的LWG共识(10-1,2 abs。),赞成将其将来纳入技术报告(现称为技术规范)
random_sample_n
算法的一个版本已添加到Library Fundamentals TS中,并称为std::experimental::sample
,提案N3925的最新版本已于2014-02年采用,但仍未成为标准的一部分,我想我们将在C ++ 17中看到。 (感谢TC!)
lexicographical_compare_3way
丢失。 根据N2666,它被认为“不够重要”,无法进行标准化。 power
拼写pow
,没有广义的能力, power
一样。 identity
, project1st
, project2nd
, select1st
和select2nd
从未实现标准化。 我找不到关于原因的讨论。 subtractive_rng
也丢失。 推测是因为<random>
将取代此问题空间。 binder1st
, binder2nd
, ptr_fun
, pointer_to_unary_function
, pointer_to_binary_function
, mem_fun
(和朋友), unary_compose
和binary_compose
。 它们或多或少地被std::bind
和朋友所取代。 construct
和destroy
已移到allocator
类中,并且不作为独立函数存在。 (感谢TC!) temporary_buffer
缓冲区丢失。 但是get_temporary_buffer
和return_temporary_buffer
可用。 我还无法确切找到原因,但是我遇到的chat不休似乎暗示它在某种程度上从根本上被打破了,许多人都在尝试修复它。 究竟是什么以及如何成为我的谜。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.