尝试调试此代码,在给定向量{1,2}的情况下,它应该打印出{1,2,2,4}。但是,我正在获得一个infinte循环。
以下是代码:
#include <iostream>
#include <vector>
using namespace std;
void Add_Doubles(vector<int> & A){
for (int i=0; i< A.size(); i++)
A.push_back(2*A[i]);
}
void print (const vector<int> & A){
for (int i=0; i<A.size(); i++)
cout << A[i] <<" ";
cout << endl;
}
int main(){
vector<int> A;
A.push_back(1);
A.push_back(2);
Add_Doubles(A);
print(A);
Add_Doubles(A);
print(A);
return 0;
}
我觉得for循环没有退出,但它可能是别的东西。任何指针都会有所帮助!
答案 0 :(得分:2)
当push_back
为A的新整数时,其大小会增加。这意味着你永远不会到达你的循环结束。我建议你把它的初始大小存储在另一个整数中:
int myVecSize = A.size();
然后将其与i进行比较。