91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何在C++中實現map的深拷貝

c++
小樊
109
2024-09-04 19:25:17
欄目: 編程語言

在C++中,要實現std::map的深拷貝,你需要遍歷原始map,并將每個元素復制到新的map

#include<iostream>
#include <map>
#include<string>

// 假設我們有一個自定義類 Person
class 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的內容,以演示深拷貝的效果。

0
韶关市| 连山| 穆棱市| 云阳县| 大连市| 习水县| 辽宁省| 余姚市| 益阳市| 长沙市| 嘉鱼县| 曲周县| 崇文区| 通渭县| 申扎县| 同德县| 德江县| 永泰县| 平利县| 象山县| 隆安县| 彭水| 克山县| 黑水县| 高清| 五华县| 北海市| 英吉沙县| 九龙县| 泰顺县| 淮南市| 齐河县| 上虞市| 五常市| 乌拉特后旗| 城步| 哈巴河县| 辽中县| 璧山县| 泰安市| 吉木萨尔县|