报错
在Leetcode刷最小生成树中,代码如下:
class Solution {
public:
vector<vector<int>> a(1001,vector<int>(1001));
vector<int> status(1001,0);
vector<int> dist(1001,INT_MAX);
int n;
int minCostConnectPoints(vector<vector<int>>& points) {
n=points.size();
if(n==1)
return 0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
a[j][i]=a[i][j]=fabs(points[i][0]-points[j][0])+fabs(points[i][1]-points[j][1]);
}
}
dist[0]=0;
int sum=0;
for(int i=0;i<n;i++){
int t=-1;
for(int j=0;j<n;j++){
if(!status[j]&&(t==-1||dist[j]<dist[t])){
t=j;
}
}
status[t]=true;
sum+=dist[t];
for(int i=0;i<n;i++){
if(dist[i]>a[t][i]){
dist[i]=a[t][i];
}
}
}
return sum;
}
};
其中测试时产生了如下的vector初始化编译错误:
解决
经过查阅资料:https://en.cppreference.com/w/cpp/language/data_members#Member_initialization
发现是在Leetcode中,我们实现的函数是类函数,写在函数外的变量是类的成员变量,其初始化应该在类的构造函数中进行,或者使用构造函数的初始化列表。
做出了如下的修改并成功的通过了编译:
版权声明:本文为qq_46153642原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。