【问题标题】:Is flat_map an STL container?flat_map 是 STL 容器吗?
【发布时间】:2022-11-13 07:16:59
【问题描述】:

在当前的 C++23s flat_map 设计草案中,flat_map::reference 类型被定义为pair<const key_type&, mapped_type&>,即它不是对flat_map::value_type = pair<key_type, mapped_type> 的引用。 (这似乎是强制性的,因为键和值不是成对存储的,而是存储在两个单独的容器中。) 因此,迭代器必须是某个代理类。

这让我想到:flat_map 实际上甚至是一个 STL 容器,类似于 std::vector<bool> 不是吗?

【问题讨论】:

    标签: c++ stl containers c++23


    【解决方案1】:

    该标准定义了 [container.reqmts] 中的“容器”是什么。在这些要求is中:

    typename X::reference

    • 结果:T&

    所以是的,std::flat_map 不是容器。

    但它从来索赔成为;它是a "container adapter":

    flat_­map 是一个容器适配器...

    请注意,像std::stack/queue/priority_queue、std::flat_set/map 一样将容器类型作为模板参数。

    【讨论】:

      猜你喜欢
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2021-07-30
      • 2011-02-07
      • 2013-03-13
      • 1970-01-01
      • 2014-09-09
      相关资源
      最近更新 更多