是否有任何不属于 C++ 标准库的 STL 头文件?
Are there any STL headers which are not part of the C++ Standard Library?
我知道一些C++标准库的头文件来源于STL,比如vector
。但是我找不到一个最新的 STL 头文件列表,这些头文件仍然没有被标准库合并。它们存在吗?
PS:我想列出它们,如果可能的话,我还想知道是否所有主要实现都包括它们或从哪里获得它们。
注意,这是按功能细分,而不是按 header 细分,因为它似乎更有用。
如果我们检查 SGI's documentation of the STL,我们会发现以下内容:
slist
已重命名为 std::forward_list
。
bit_vector
已替换为 std::vector<bool>
的模板规范。此实现可能(不一定)以 bit_vector
的方式针对 space 进行优化。
hash_set
和朋友现在拼写为 unordered_set
。功能似乎是一样的。 (感谢T.C.!)
rope
缺失。标准库中没有等效的数据结构。我找不到与该主题相关的 WG21 讨论。
sequence_buffer
缺失,因为这主要用于向后插入 rope
。
random_sample
和 random_sample_n
缺失。 N3547 中讨论了原因:
After WG21 consideration at the Sophia-Antipolis meeting, Austern updated the proposal.
Among other changes, he withdrew [random_sample
and random_sample_n
]: “The LWG was concerned that they might not be well enough understood for standardization. . . . It may be appropriate to propose
those algorithms for TR2” [
Aus08b
]. The wiki minutes of the discussion are equally terse: “Bjarne
feels rationale is insufficient. PJ worries we will get it wrong. Lawrence worries that people will
roll their own and get it wrong. Good candidate for TR2” [
LWG08
]. The subsequent vote regarding
these proposed algorithms achieved a solid LWG consensus (10-1, 2 abs.) in favor of their future
inclusion in a Technical Report (now termed a Technical Specification)
random_sample_n
算法的一个版本已进入图书馆基础 TS,称为 std::experimental::sample
,提案 N3925 的最新迭代已于 2014 年 2 月通过,但仍未成为一部分标准的一部分,我想我们会在 C++17 中看到。 (谢谢T.C.!)
lexicographical_compare_3way
缺失。根据N2666标准化被视为"not important enough"。
power
拼写为 pow
并且不具有 power
所具有的通用功能。
identity
、project1st
、project2nd
、select1st
和 select2nd
从未实现标准化。我找不到关于原因的讨论。
subtractive_rng
也不见了。推测是因为 <random>
会取代这个问题 space.
binder1st
、binder2nd
、ptr_fun
、pointer_to_unary_function
、pointer_to_binary_function
、mem_fun
(和朋友)、unary_compose
, 和 binary_compose
丢失或弃用。他们或多或少被 std::bind
和朋友所取代。
construct
和 destroy
已移入 allocator
class 并且不再作为独立函数存在。 (感谢T.C.!)
temporary_buffer
缺失。但是 get_temporary_buffer
和 return_temporary_buffer
可用。我一直无法找出确切的原因,但我所听到的 运行 的喋喋不休似乎暗示它在某种程度上已经从根本上被破坏了,而且很多人一直在尝试修复它。究竟是什么以及如何对我来说仍然是个谜。
我知道一些C++标准库的头文件来源于STL,比如vector
。但是我找不到一个最新的 STL 头文件列表,这些头文件仍然没有被标准库合并。它们存在吗?
PS:我想列出它们,如果可能的话,我还想知道是否所有主要实现都包括它们或从哪里获得它们。
注意,这是按功能细分,而不是按 header 细分,因为它似乎更有用。
如果我们检查 SGI's documentation of the STL,我们会发现以下内容:
slist
已重命名为std::forward_list
。bit_vector
已替换为std::vector<bool>
的模板规范。此实现可能(不一定)以bit_vector
的方式针对 space 进行优化。hash_set
和朋友现在拼写为unordered_set
。功能似乎是一样的。 (感谢T.C.!)rope
缺失。标准库中没有等效的数据结构。我找不到与该主题相关的 WG21 讨论。sequence_buffer
缺失,因为这主要用于向后插入rope
。random_sample
和random_sample_n
缺失。 N3547 中讨论了原因:After WG21 consideration at the Sophia-Antipolis meeting, Austern updated the proposal. Among other changes, he withdrew [
random_sample
andrandom_sample_n
]: “The LWG was concerned that they might not be well enough understood for standardization. . . . It may be appropriate to propose those algorithms for TR2” [ Aus08b ]. The wiki minutes of the discussion are equally terse: “Bjarne feels rationale is insufficient. PJ worries we will get it wrong. Lawrence worries that people will roll their own and get it wrong. Good candidate for TR2” [ LWG08 ]. The subsequent vote regarding these proposed algorithms achieved a solid LWG consensus (10-1, 2 abs.) in favor of their future inclusion in a Technical Report (now termed a Technical Specification)
random_sample_n
算法的一个版本已进入图书馆基础 TS,称为 std::experimental::sample
,提案 N3925 的最新迭代已于 2014 年 2 月通过,但仍未成为一部分标准的一部分,我想我们会在 C++17 中看到。 (谢谢T.C.!)
lexicographical_compare_3way
缺失。根据N2666标准化被视为"not important enough"。power
拼写为pow
并且不具有power
所具有的通用功能。identity
、project1st
、project2nd
、select1st
和select2nd
从未实现标准化。我找不到关于原因的讨论。subtractive_rng
也不见了。推测是因为<random>
会取代这个问题 space.binder1st
、binder2nd
、ptr_fun
、pointer_to_unary_function
、pointer_to_binary_function
、mem_fun
(和朋友)、unary_compose
, 和binary_compose
丢失或弃用。他们或多或少被std::bind
和朋友所取代。construct
和destroy
已移入allocator
class 并且不再作为独立函数存在。 (感谢T.C.!)temporary_buffer
缺失。但是get_temporary_buffer
和return_temporary_buffer
可用。我一直无法找出确切的原因,但我所听到的 运行 的喋喋不休似乎暗示它在某种程度上已经从根本上被破坏了,而且很多人一直在尝试修复它。究竟是什么以及如何对我来说仍然是个谜。