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

时间:2015-03-23 18:56:24

标签: c++ stl c++-standard-library

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

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

1 个答案:

答案 0 :(得分:10)

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

如果我们检查SGI's documentation of the STL,我们会发现以下内容:

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

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

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

    1. lexicographical_compare_3way丢失了。根据N2666标准化被认为“不够重要”。
    2. power的拼写为pow,并且没有power所做的通用功能。
    3. identityproject1stproject2ndselect1stselect2nd从未进行过标准化。我找不到关于原因的讨论。
    4. subtractive_rng也不见了。推定,因为<random>将取代这个问题空间。
    5. binder1stbinder2ndptr_funpointer_to_unary_functionpointer_to_binary_functionmem_fun(以及朋友),unary_composebinary_compose已丢失或已弃用。它们或多或少被std::bind和朋友取代。
    6. constructdestroy已移至allocator类,并不作为独立函数存在。 (谢谢T.C。!)
    7. temporary_buffer丢失了。但get_temporary_bufferreturn_temporary_buffer可用。我一直无法找到确切的原因,但是我遇到的喋喋不休似乎暗示它在某种程度上已经被打破,并且很多人一直试图修复它。对我来说究竟是什么以及如何仍然是一个谜。