std::vector 深拷贝
时间: 2023-08-30 07:09:48 浏览: 286
C++ 类的深拷贝
在C++中,当使用std::vector作为参数传递时,有三种传参方式:传值、传引用和传指针。其中,传值方式(function1)会进行深拷贝,即会复制整个vector的内容;传引用方式(function2)则不会进行拷贝,直接使用原始vector的引用;传指针方式(function3)也不会进行拷贝,但需要使用指针来访问vector。的例子中,Base类包含了一个vector成员变量m_vec。当将Base对象放入vector或list容器中时,如果vector内的数据是结构体,则会进行深拷贝,即vector内的数据会拷贝一份保存,不会丢失。但如果vector内的数据是指针,则会进行浅拷贝,数据超出作用域后会自动析构,vector内所指向的数据会被更改和丢失。因此,如果vector作为全局变量,不应该使用指针。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [【STL】Vector和List的深拷贝浅拷贝问题](https://blog.csdn.net/woalss/article/details/106425327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [vector内数据的深拷贝和浅拷贝](https://blog.csdn.net/earbao/article/details/44492185)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文