C ++在向量中添加元素的双重

时间:2017-10-23 21:18:44

标签: c++ arrays loops for-loop vector

尝试调试此代码,在给定向量{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循环没有退出,但它可能是别的东西。任何指针都会有所帮助!

1 个答案:

答案 0 :(得分:2)

push_back为A的新整数时,其大小会增加。这意味着你永远不会到达你的循环结束。我建议你把它的初始大小存储在另一个整数中:

int myVecSize = A.size();

然后将其与i进行比较。