首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++:如何执行泛型的深度克隆

在 C++ 中,执行泛型的深度克隆需要使用一些模板编程技巧。以下是一个简单的示例,展示了如何实现泛型的深度克隆:

代码语言:cpp
复制
#include<iostream>
#include<vector>
#include<memory>

template<typename T>
std::unique_ptr<T> deep_clone(const T& obj) {
    return std::make_unique<T>(obj);
}

template<typename T>
std::unique_ptr<std::vector<T>> deep_clone(const std::vector<T>& obj) {
    auto cloned_vector = std::make_unique<std::vector<T>>();
    for (const auto& item : obj) {
        cloned_vector->push_back(deep_clone(item));
    }
    return cloned_vector;
}

int main() {
    std::vector<std::vector<int>> original = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    auto cloned = deep_clone(original);

    // 修改原始数据以验证深度克隆
    original[0][0] = 99;

    std::cout << "Original:"<< std::endl;
    for (const auto& row : original) {
        for (const auto& item : row) {
            std::cout<< item << " ";
        }
        std::cout<< std::endl;
    }

    std::cout << "Cloned:"<< std::endl;
    for (const auto& row : *cloned) {
        for (const auto& item : row) {
            std::cout<< item << " ";
        }
        std::cout<< std::endl;
    }

    return 0;
}

在这个示例中,我们定义了两个模板函数:deep_clone。第一个函数用于执行泛型的深度克隆,第二个函数用于处理 std::vector 类型的对象。

main 函数中,我们创建了一个 std::vector 对象,并使用 deep_clone 函数对其进行深度克隆。然后,我们修改了原始数据,以验证克隆是否是深度克隆。

这个示例展示了如何在 C++ 中执行泛型的深度克隆,但是请注意,这只是一个简单的示例,实际应用中可能需要更复杂的实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的结果

领券