c++ - "CopyConstructible"对 C++ STL 容器元素的要求

标签 c++ stl containers copy-constructor deep-copy

关于C++ STL容器元素的要求,标准是这样说的:元素类型应该是CopyConstructible,对于CopyConstructible的要求有一个表。此外,根据各种书籍(Josuttis 等),生成的拷贝应该“等同于”来源。

我想我需要在这里澄清一下。究竟什么是“等同于”?另外,我对“CopyConstructible”和“深/浅拷贝”之间的关系有点困惑。通常,复制构造函数是浅复制或深复制。那么哪个适用于“CopyConstructible”,哪个不适用?

感谢任何评论!

最佳答案

深拷贝或浅拷贝都有效。例如,shared_ptr 总是进行浅拷贝(带有一些额外的引用计数内容),您可以在容器中很好地使用它们。这取决于复制操作的语义。

等效意味着您的程序不应该依赖于它是否适用于原始版本或拷贝。

关于c++ - "CopyConstructible"对 C++ STL 容器元素的要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6532173/

相关文章:

c++ - 对基类和派生类使用静态容器

c++ - 带有静态 std::vector 的内存泄漏(有点)

c++ - 图增量构建的性能问题

windows - Window Server 2016 上的 Portainer 安装程序

c++ - 我可以使用 std::stack 作为对象池容器吗?

c++ - 现代编译器如何优化C++中的函数对象?

大型数组的 C# 内存优化

c++ - Qt: setScreenRect = 段错误

用于容器状态存储的 Azure Web App

c++ - 构造函数执行顺序/顺序 : dependent initialization of static variable (class instance) in a function