想出这个问题。任何提示?
答案 0 :(得分:13)
无法复制的类。 STL容器需要对象是可复制的,因为容器拥有该对象的副本,并且需要能够移动它。
答案 1 :(得分:9)
我最喜欢放入STL容器的东西是std :: auto_ptr ......非常糟糕的事情发生了。 ..我认为大多是意外的物体损失。
一般来说,任何不可复制的东西都不能进入容器 - 你会遇到编译错误。具有异常复制语义的东西(如auto_ptr)不应该放在容器中(但是你可能不会得到任何编译器错误)。由于容器可以自由创建各种临时副本。
我认为如果没有“理智”的默认构造函数和赋值运算符,您也会遇到一些痛苦。
答案 2 :(得分:4)
根据您执行的操作,除了可以对存储在容器中的对象进行复制外,您还需要一个默认构造函数。对于传递给算法的对象,还有其他要求,例如可调用或可递增。这些要求已有详细记录。
答案 3 :(得分:2)
该类可能不会在析构函数中抛出异常......所以没有类应该抛出析构函数
答案 4 :(得分:0)
取决于容器,有关更多信息,标准的第23节规定了所有容器和方法的要求。
为安全起见,您应该假设始终需要以下内容: 默认构造和复制构造