代码之家  ›  专栏  ›  技术社区  ›  choxsword

stdlib中对容器元素类型有什么要求?

  •  1
  • choxsword  · 技术社区  · 6 年前

    有一件事我知道,也许不是真的,那就是 T 应该是 可复制构造 ,也就是说, T 应该有一个可访问的复制构造函数。

    但是,是否有其他要求,如 可转让副本 ?

    作为补充,我记得 有效stl vector<bool> 不是标准容器,因为它不符合 T *p=&c[0] 身体健康的

    1 回复  |  直到 6 年前
        1
  •  4
  •   code707    6 年前

    我认为序列容器和关联容器有不同的要求。例如,下面是vector(有关详细信息,请参见cppreference.com)。此外,请注意,它已经用新版本的C++改变了。

    • t必须满足可复制可分配和可复制可构造的要求。(直到C++ 11)

    • 对元素的要求取决于对容器执行的实际操作。一般来说 必需元素类型是完整类型,并且满足 可擦除的要求,但许多成员函数要求更严格 要求。(因为C++ 11)(直到C++ 17)

    • 对元素的要求取决于对容器执行的实际操作。一般来说 要求元素类型满足可擦除的要求,但是 许多成员职能部门提出了更严格的要求。这个集装箱 (但不是其成员)可以用不完整的元素实例化 如果分配器满足分配器完整性,则键入 要求。(C++ 17)