如果要将数组作为类的成员变量,则有两个主要选项:
答:在堆上分配内存
class X
{
int * arr;
public:
UnionFind(int numNodes)
{
arr = new int[numNodes];
}
}
Run Code Online (Sandbox Code Playgroud)
B:使用矢量
class X
{
vector <int> arr;
public:
UnionFind(int numNodes)
{
arr.resize(numNodes);
}
}
Run Code Online (Sandbox Code Playgroud)
以下哪一项是首选方法?我知道堆分配数组的一个缺点是你需要自己删除内存.
作为一个小问题,如果在堆上创建X的对象vector <int> arr也在对象内的堆中?如果是这样,为什么vector <int> arr不手动需要删除?
当您可以在动态分配的C样式数组和a之间进行std::vector<>选择时,请选择向量.
size()请注意,std::array大多数情况下都存在C阵列(例如,首选在堆栈上进行分配时)