c++map深复制实现
时间: 2024-08-21 22:03:15 浏览: 119
c++新手入门基础语法笔记
在 C++ 中,`std::map` 是一种关联容器,它存储键值对,其中每个键都是唯一的。如果你想要实现一个深拷贝(deep copy),即创建一个新的 `std::map` 并将原 map 的内容完全复制到新 map 中,你需要逐个复制内部的 `pair` 对以及它们指向的对象(如果需要的话)。这里是一个简单的例子:
```cpp
#include <iostream>
#include <map>
#include <vector>
class MyClass {
public:
MyClass(int value) : value_(value) {}
int getValue() const { return value_; }
private:
int value_;
};
// 深拷贝函数
std::map<int, MyClass> deepCopy(const std::map<int, MyClass>& original_map) {
std::map<int, MyClass> copied_map;
for (const auto& pair : original_map) {
copied_map[pair.first] = MyClass(pair.second.getValue()); // 创建新的MyClass实例并放入新map
}
return copied_map;
}
int main() {
std::map<int, MyClass> original({{1, MyClass(5)}, {2, MyClass(10)}});
std::map<int, MyClass> copied_map = deepCopy(original);
// 验证深拷贝
for (const auto& pair : copied_map) {
std::cout << "Key: " << pair.first << ", Value: " << pair.second.getValue() << std::endl;
}
// 修改原 map 不影响深拷贝
original[3] = MyClass(15); // 可见新插入项
return 0;
}
```
在这个示例中,`MyClass` 类用于演示如何处理自定义类型的元素。`deepCopy` 函数遍历原 map,并为每个元素创建一个新的 `MyClass` 实例,然后添加到新 map 中。
阅读全文