是否有任何不能在STL中使用的c ++类?

时间:2010-03-18 05:24:22

标签: c++ stl

想出这个问题。任何提示?

5 个答案:

答案 0 :(得分:13)

无法复制的类。 STL容器需要对象是可复制的,因为容器拥有该对象的副本,并且需要能够移动它。

答案 1 :(得分:9)

我最喜欢放入STL容器的东西是std :: auto_ptr ......非常糟糕的事情发生了。 ..我认为大多是意外的物体损失。

一般来说,任何不可复制的东西都不能进入容器 - 你会遇到编译错误。具有异常复制语义的东西(如auto_ptr)不应该放在容器中(但是你可能不会得到任何编译器错误)。由于容器可以自由创建各种临时副本。

我认为如果没有“理智”的默认构造函数和赋值运算符,您也会遇到一些痛苦。

答案 2 :(得分:4)

根据您执行的操作,除了可以对存储在容器中的对象进行复制外,您还需要一个默认构造函数。对于传递给算法的对象,还有其他要求,例如可调用或可递增。这些要求已有详细记录。

答案 3 :(得分:2)

该类可能不会在析构函数中抛出异常......所以没有类应该抛出析构函数

答案 4 :(得分:0)

取决于容器,有关更多信息,标准的第23节规定了所有容器和方法的要求。

为安全起见,您应该假设始终需要以下内容: 默认构造和复制构造