pep*_*ero 9 c++ containers stl deep-copy copy-constructor
关于C++ stl容器元素的要求,标准说:元素类型应该是CopyConstructible,并且有一个CopyConstructible要求的表.此外,通过各种书籍(Josuttis等),生成的副本应该"等同于"源.
我想我需要一些清晰度.什么是"等同于"?另外,我对"CopyConstructible"和"深/浅拷贝"之间的关系有点困惑.通常,复制构造函数是浅拷贝或深拷贝.那么哪一个适用于"CopyConstructible",哪个不适用?
谢谢你的评论!
深层或浅层复制都有效.例如,shared_ptr总是做一个浅拷贝(有一些额外的引用计数东西),你可以在容器中使用它们就好了.它取决于复制操作的语义.
等效意味着您的程序不应该依赖于它是使用原件还是副本.
如果你把东西放进容器里,当你取回它时,你会得到一些与你放入的东西相同的东西.只要这对你的对象有意义,那么你就可以从容器中得到一些有用的东西.
无论是浅拷贝还是深拷贝都取决于您对对象类型所需的语义.您的对象可能是指针式,手柄式或类似容器.它可能包含一些可变的缓存数据,您可能会或可能不会选择在复制操作上复制.
只要您的复制构造函数可以访问并执行您需要它来保留对象类型的语义,那么您就满足了CopyConstructible要求.
| 归档时间: |
|
| 查看次数: |
2128 次 |
| 最近记录: |