gpt4 book ai didi

c++ - 复制数组

转载 作者:太空宇宙 更新时间:2023-11-04 13:52:12 24 4
gpt4 key购买 nike

我正在尝试复制一个数组。

class Myobject 
{
int nb;
string name;
Myobject* next;
Myobject(int nb, string name) {this->name=name; this->nb=nb; this->next=NULL;}
};

Myobject **array;
array= new Myobject*[100];

我如何制作 Myobject ** 的深层拷贝,从而能够修改其中一个实例。

最佳答案

如果您想保持最新状态,请使用 RAII C++ 非常适合。

#include <vector>
#include <memory>
#include <string>
#include <iostream>

struct Myobject : std::enable_shared_from_this< Myobject >
{
int nb;
std::string name;
std::shared_ptr<Myobject> next;
Myobject(int nb, std::string name) { this->name=name; this->nb=nb; }
~Myobject() { std::cout << "deleting " << nb << " " << name << std::endl; }
};

int main() {
std::vector< std::shared_ptr< Myobject > > arr;
arr.push_back(std::make_shared< Myobject >(1,"first"));
arr.push_back(std::make_shared< Myobject >(2,"second"));

for (auto obj: arr) {
std::cout << obj->nb << " " << obj->name << std::endl;
}

arr[0]->next = arr[1];
};

outputting

1 first
2 second
deleting 1 first
deleting 2 second

而且一开始你不需要太关心内存管理。您的示例如果不小心,会产生内存泄漏。

更新:忘记提及,如果您有循环引用,请注意,使用 shared_ptr 也可能会导致内存泄漏。如果是这种情况,您可以通过切换到 weak_ptrs 来避免这种情况→ std::weak_ptr

关于c++ - 复制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23031380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com