我知道您必须小心使用自动指针(以及为什么),尤其是使用 STL。但我看不出这有什么问题:
std::map<T1, std::auto_ptr<T2> >;
这样安全吗?
我看到它如何在 std::vector
中中断,因为它必须时不时地复制它的项目,但是对于 std 的值类型也是如此吗:: map
?
编辑:显然,无论它是否安全,我都无法(从技术上)填充 map ,但我会保留这个问题以供理论上考虑。否则,将其视为已关闭。
最佳答案
这不安全。从技术上讲,std::auto_ptr
不满足 CopyConstructible 或 Assignable 的要求,因为使用 auto_ptr
制作的拷贝' s 复制构造函数或复制赋值运算符不等同于复制操作后的复制源。与任何标准容器一起使用的任何类型都必须满足这些要求。
您可能会发现,对于一个特定用例的一种实现,您似乎获得了预期的行为,但如果您违反了容器的要求,您就不能指望您的代码在所有情况下都能正常工作。
关于c++ - 在 std::map 中使用 std::auto_ptr 安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8280828/