C++;在.size()之后丢失向量元素 我是一个C++新手,我的问题是,不知何故,我只是通过调用sig()来丢失向量元素。对于以下代码段(下面附上完整代码),我得到以下输出: A: number of elements: 560 B: number of elements: 560 B: number of elements: 0 B: number of elements: 0 B: number of elements: 0 C: number of elements: 0

C++;在.size()之后丢失向量元素 我是一个C++新手,我的问题是,不知何故,我只是通过调用sig()来丢失向量元素。对于以下代码段(下面附上完整代码),我得到以下输出: A: number of elements: 560 B: number of elements: 560 B: number of elements: 0 B: number of elements: 0 B: number of elements: 0 C: number of elements: 0,c++,memory,vector,size,C++,Memory,Vector,Size,//有关部分 cout << "A: number of elements: " << combinations.size() << endl; float sum_vect[120][2]; for (int i = 0; i < combinations.size(); ++i) { for (int j = 0; j < 2; ++j) { sum_vect[i][j] = 0; } } cout <&l

//有关部分

cout << "A: number of elements: " << combinations.size() << endl;
float sum_vect[120][2];
for (int i = 0; i < combinations.size(); ++i) {
    for (int j = 0; j < 2; ++j) {
        sum_vect[i][j] = 0;
    }
}
cout << "B: number of elements: " << combinations.size() << endl;
cout << "B: number of elements: " << combinations.size() << endl;
cout << "B: number of elements: " << combinations.size() << endl;
cout << "B: number of elements: " << combinations.size() << endl;

for (int i = 0; i < combinations.size(); ++i) {
    combination = combinations.at(i);
    for (int j = 0; j < order; ++j) {
        sum_vect[i][0] += (float)virtual_pos[combination[j]][0];
        sum_vect[i][1] += (float)virtual_pos[combination[j]][1];
    }
}

vector<int> optimal_ind;
cout << "C: number of elements: " << combinations.size() << endl;

cout缓冲区溢出。您的输出:

A: number of elements: 560
您的代码:

cout << "A: number of elements: " << combinations.size() << endl;
float sum_vect[120][2];
for (int i = 0; i < combinations.size(); ++i) {
   for (int j = 0; j < 2; ++j) {
      sum_vect[i][j] = 0;
    }
}

cout缓冲区溢出。您的输出:

A: number of elements: 560
您的代码:

cout << "A: number of elements: " << combinations.size() << endl;
float sum_vect[120][2];
for (int i = 0; i < combinations.size(); ++i) {
   for (int j = 0; j < 2; ++j) {
      sum_vect[i][j] = 0;
    }
}

cout缓冲区溢出。您的输出:

A: number of elements: 560
您的代码:

cout << "A: number of elements: " << combinations.size() << endl;
float sum_vect[120][2];
for (int i = 0; i < combinations.size(); ++i) {
   for (int j = 0; j < 2; ++j) {
      sum_vect[i][j] = 0;
    }
}

cout缓冲区溢出。您的输出:

A: number of elements: 560
您的代码:

cout << "A: number of elements: " << combinations.size() << endl;
float sum_vect[120][2];
for (int i = 0; i < combinations.size(); ++i) {
   for (int j = 0; j < 2; ++j) {
      sum_vect[i][j] = 0;
    }
}

cout谢谢,我完全忘记了在处理另一个bug时我在那里放了一个常量。我想这就是人们告诉我尽可能使用向量的原因之一。非常感谢 未定义的行为。。。以一种定时炸弹的方式让一个错误真的回来真的很可怕。
std::vector sum_vect(combines.size(),std::vector(2,0))应该可以这样做,并删除将数据初始化为0的循环。谢谢,我完全忘记了在处理另一个bug时我在那里放了一个常量。我想这就是人们告诉我尽可能使用向量的原因之一。非常感谢 未定义的行为。。。以一种定时炸弹的方式让一个错误真的回来真的很可怕。
std::vector sum_vect(combines.size(),std::vector(2,0))应该可以这样做,并删除将数据初始化为0的循环。谢谢,我完全忘记了在处理另一个bug时我在那里放了一个常量。我想这就是人们告诉我尽可能使用向量的原因之一。非常感谢 未定义的行为。。。以一种定时炸弹的方式让一个错误真的回来真的很可怕。
std::vector sum_vect(combines.size(),std::vector(2,0))应该可以这样做,并删除将数据初始化为0的循环。谢谢,我完全忘记了在处理另一个bug时我在那里放了一个常量。我想这就是人们告诉我尽可能使用向量的原因之一。非常感谢 未定义的行为。。。以一种定时炸弹的方式让一个错误真的回来真的很可怕。
std::vector sum_vect(combines.size(),std::vector(2,0)),并删除将数据初始化为0的循环。