2017-10-23 7 views
0

このコードをデバッグしようとすると、ベクトル{1,2}が与えられている場合、{1,2,2,4}が出力されます。しかし、私はループを得ています。ここでC++ベクトル内の要素の倍数を追加する

コードです:

#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; 
} 

私はそれが出ていないループのためだと感じるが、それは何か他のものかもしれません。どんなポインタが助けになるでしょう!

+2

ヒント:要素を 'push_backすると' A.size()に何が起こりますか?いつあなたのループは止まるのですか? – 6502

+0

'Add_Doubles'は何をすべきでしょうか? – George

答えて

2

push_back新しい整数をAにすると、サイズが大きくなります。つまり、ループの終わりには到達しません。次のような別の整数に初期サイズを格納することをお勧めします。

int myVecSize = A.size(); 

これをiと比較してください。

関連する問題