是否有任何STL标头不属于C++标准库?

Mar*_*377 19 c++ stl c++-standard-library

我知道一些C++标准库头文件来自STL,例如vector.但是我没有找到STL标题的最新列表,这些标题仍未被标准库合并.它们存在吗?

PS:我想列出它们,并且如果可能的话,还要知道所有主要实现是否包括它们或在何处获取它们.

Omn*_*ity 10

注意,这是一个按功能分解的功能,而不是按标题分解,因为它似乎更有用.

如果我们检查SGI的STL文档,我们会发现以下内容:

  1. slist已重命名std::forward_list.
  2. bit_vector已被模板规范所取代std::vector<bool>.这种实现可能(不一定)以这样的方式优化空间bit_vector.
  3. hash_set和朋友现在拼写像unordered_set.功能似乎是一样的.(谢谢TC!)
  4. rope不见了.标准库中没有等效的数据结构.我无法找到关于该主题的相关WG21讨论.
  5. sequence_buffer缺少,因为这主要用于后插a rope.
  6. random_sample并且random_sample_n失踪了.原因在N3547中讨论过:

    在索菲亚 - 安提波利斯会议上考虑WG21后,Austern更新了该提案.在其他变化中,他撤回了[ random_samplerandom_sample_n]:"LWG担心他们可能不太了解标准化....为TR2"[Aus08b]提出这些算法可能是适当的.讨论的维基会议记录同样简洁:"Bjarne觉得理由不够充分.PJ担心我们会弄错.劳伦斯担心人们会自己动手并弄错.TR2的好候选人"[LWG08].随后对这些拟议算法的投票达成了稳固的LWG共识(10-1,2 abs),有利于将来纳入技术报告(现称为技术规范)

random_sample_n算法的一个版本已经进入了库基础知识TS并且被称为std::experimental::sample,在2014-02中采用了N3925提案的最新版本,但仍然不是标准的一部分,我想我们将在C++中看到17.(谢谢TC!)

  1. lexicographical_compare_3way不见了.根据N2666标准化被认为"不够重要".
  2. power是拼写的pow,没有广义的功能power.
  3. identity,project1st,project2nd,select1stselect2nd从未到标准化.我无法找到有关原因的讨论.
  4. subtractive_rng也不见了.推定因为<random>将取代这个问题空间.
  5. binder1st,binder2nd,ptr_fun,pointer_to_unary_function,pointer_to_binary_function,mem_fun(朋友),unary_compose以及binary_compose丢失或过时.他们或多或少被std::bind朋友所取代.
  6. constructdestroy已被移入allocator该类,并不作为独立函数存在.(谢谢TC!)
  7. temporary_buffer不见了.但是get_temporary_buffer,return_temporary_buffer并且可用.我一直无法找到确切的原因,但是我遇到的喋喋不休似乎暗示它在某种程度上已经被打破,并且很多人一直试图修复它.对我来说究竟是什么以及如何仍然是一个谜.