如何在C++中实现map的深拷贝

   2024-09-30 8250
核心提示:在C++中,要实现std::map的深拷贝,你需要遍历原始map,并将每个元素复制到新的map中#includeiostream#include map#includestrin

在C++中,要实现std::map的深拷贝,你需要遍历原始map,并将每个元素复制到新的map

#include<iostream>#include <map>#include<string>// 假设我们有一个自定义类 Personclass Person {public:    std::string name;    int age;    // 构造函数    Person(const std::string& name, int age) : name(name), age(age) {}    // 拷贝构造函数    Person(const Person& other) : name(other.name), age(other.age) {}};int main() {    // 创建一个包含Person对象的 map    std::map<int, Person> original_map;    original_map[1] = Person("Alice", 30);    original_map[2] = Person("Bob", 25);    // 实现深拷贝    std::map<int, Person> copied_map;    for (const auto& pair : original_map) {        copied_map.insert(std::make_pair(pair.first, Person(pair.second)));    }    // 修改原始 map 中的一个元素,以演示深拷贝的效果    original_map[1].name = "Alicia";    // 输出两个 map 的内容    std::cout << "Original map:"<< std::endl;    for (const auto& pair : original_map) {        std::cout<< pair.first << ": "<< pair.second.name << ", "<< pair.second.age<< std::endl;    }    std::cout << "Copied map:"<< std::endl;    for (const auto& pair : copied_map) {        std::cout<< pair.first << ": "<< pair.second.name << ", "<< pair.second.age<< std::endl;    }    return 0;}

在这个例子中,我们首先创建了一个包含Person对象的original_map。然后,我们使用for循环遍历original_map,并将每个元素复制到copied_map中。注意,我们使用Person(pair.second)来创建一个新的Person对象,这样就会调用Person的拷贝构造函数,从而实现深拷贝。

最后,我们修改original_map中的一个元素,并输出两个map的内容,以演示深拷贝的效果。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号