我正在使用构造函数来初始化实例变量。当我打印实例变量时,它给出了错误的输出。
int main(){
int k[]={1,2,4};
int hs=3;
int n=3;
priorityq p(k,hs,n);
p.printKey();
}
class priorityq{
int key[];
int heapsize;
int n;
public:
void printKey();
priorityq(int k[],int hs, int ni);
};
priorityq::priorityq(int k[],int hs, int ni){
for(int i=0;i<ni;i++)
key[i]=k[i];
heapsize=hs;
n=n_i;
}
void priorityq::printKey(){
for(int i=0;i<heap_size;i++)
cout<<key[i]<<" ";
cout<<endl;
}
我希望输出是
1 2 4
但我越来越
3 3 4
最佳答案
如果您使用的是 c++,请使用 std::array
,或者更好地用于动态范围数组,请使用 std::vector
。而不是使用 []
-operator 使用 at()
方法,它检查越界错误:
编辑,构造函数中有错误
int main(){
std::vector<int> k{1,2,4};
int hs=3;
int n=3;
priorityq p(k,hs,n);
p.printKey();
}
..
class priorityq{
std::vector<int> key;
int heapsize;
int n;
public:
void printKey();
priorityq(std::vector<int>& k,int hs, int ni);
};
..
priorityq::priorityq(std::vector<int>& k,int hs, int ni){
for(int i=0;i<ni;i++)
key.push_back(k.at(i));
heapsize=hs;
n=n_i;
}
void priorityq::printKey(){
for(int i=0;i<heap_size;i++)
cout<<key.at(i)<<" ";
cout<<endl;
}
关于c++ - 实例变量值打印不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58521534/