c++ stl 容器 深拷贝 模板
时间: 2024-01-18 10:01:07 浏览: 92
Effective STL
C++ STL(标准模板库)提供了丰富的容器类模板,包括vector、list、queue、map等。在使用STL容器时,有时需要进行深拷贝,即复制容器中的内容到一个全新的容器中,而不是简单地复制指向同一内存地址的指针。
进行深拷贝时,通常会使用拷贝构造函数或者重载赋值运算符来实现。当使用模板类时,深拷贝同样适用。模板类的深拷贝会复制模板类中的每个元素,确保新容器与原容器完全独立,不会受到原容器的影响。
例如,对于一个存储int类型的vector容器,进行深拷贝可以使用以下方式:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> originalVec = {1, 2, 3, 4, 5};
// 使用拷贝构造函数进行深拷贝
std::vector<int> copiedVec(originalVec);
// 或者使用重载赋值运算符进行深拷贝
std::vector<int> anotherCopiedVec;
anotherCopiedVec = originalVec;
// 此时修改原始容器的元素值,不会影响到新容器
originalVec[0] = 100;
for (int num : copiedVec) {
std::cout << num << " ";
}
std::cout << std::endl;
for (int num : anotherCopiedVec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
在上述示例中,通过使用拷贝构造函数或重载赋值运算符,实现了对原始vector容器的深拷贝,使得新容器与原容器相互独立。这样一来,对原容器的修改不会影响到新容器,确保了程序的安全性和稳定性。
阅读全文