我知道的一件事可能不是真的,T
应该是可复制的,也就是说,T
应该有一个可访问的复制构造函数。
但是,还有其他要求,例如可分配吗?
作为补充,我记得有效STL 表示vector<bool>
不是标准容器,因为它不符合T *p=&c[0]
良好的要求 - 形成。
答案 0 :(得分:4)
我认为序列容器和关联容器有不同的要求。例如,以下是vector(有关更多详细信息,请参阅cppreference.com)。另请注意,它已使用较新版本的c ++进行了更改。
T必须符合CopyAssignable和CopyConstructible的要求。 (直到C ++ 11)
对元素施加的要求取决于对容器执行的实际操作。一般来说,它是 要求元素类型是完整类型并满足 Erasable的要求,但许多成员函数更严格 要求。 (自C ++ 11起)(直到C ++ 17)
对元素施加的要求取决于对容器执行的实际操作。一般来说,它是 要求元素类型符合Erasable的要求,但是 许多成员职能强加了更严格的要求。这个容器 (但不是其成员)可以使用不完整的元素进行实例化 如果分配器满足分配器完整性,则键入 要求。 (自C ++ 17起)