2017-10-26 11 views
-1

ベクトルに要素を追加しようとしています。 10から21までのすべての偶数を追加したいと思いますが、エラーが発生しています。誰かがそれを修正する方法を教えてもらえますか?ベクトルに要素を追加中にエラーが発生しました

int main() 
{ 
vector<int> vect_name; 
for (int i=10; i<21; i=i+2) 
    vect_name.push_back(i); 
    cout << vect_name[i] <<endl; 

return 0; 

} 
+2

のようになります。 –

+0

[良い質問をする方法を読む](http://stackoverflow.com/help/how-to-ask)、[最小、**完全**、および検証可能な例](http ://stackoverflow.com/help/mcve)。 –

+1

あなたは、おそらく[良い初心者の本をいくつか入手してください](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) '{}'の中括弧を使用しています。 –

答えて

0

これは、forループのブレースがないためです。 forループで作成したループ変数には、次の行だけが必要な中括弧がないため、中括弧に限定されたスコープがあります。そのため、ループ変数の

私は、これはそれを修正する必要があり

int main() 
{ 
vector<int> vect_name; 
for (int i=10; i<21; i=i+2) 
    vect_name.push_back(i); 


for(int i=0; i<vect_name.size(); i++) 
    cout << vect_name[i] <<endl; 

return 0; 

} 

利用できません。

+1

インデックスは '0,1,2、...'ですが、 'i'は' 10,12,14、... 'ですので、まだ間違っています – Barmar

+0

おっと、私はそれを逃した! –

+0

さて、イテレータを使用します。固定することができます。 –

1

追加している偶数の周りをループしている同じインデックス変数でベクトルの内容を印刷する必要がある理由はありません。あなたは、ループ本体を示すために、括弧内の文を囲み、このエラー

error: ‘i’ was not declared in this scope 
cout << vect_name[i] <<endl; 
       ^

を取得する必要があります

#include <iostream> 
#include <vector> 
using namespace std; 

int main() 
{ 
    vector<int> vect_name; 
    //push to vector 
    for (int i=10; i<21; i=i+2) { 
     vect_name.push_back(i); 
    } 

    // print the contents of vector 
    for (size_t i =0; i < vect_name.size(); ++i) { 
     cout << vect_name[i] << " "; 
    } 
    cout << '\n'; 

    return 0;  
} 
+0

ループ本体の周りにカッコを入れないようにしてください。 https://stackoverflow.com/questions/359732/why-is-it-considered-a-bad-practice-to-omit-curly-braces?lq=1 – Barmar

+0

@Barmar、私は自分の答えを更新しました。ありがとうございました。 – Rishi

0

:おそらく、あなたはあなたのコードをこのように構造化する必要があります。中括弧がなければ、次のステートメントはループ本体とみなされます。

#include <iostream> 
#include <vector> 
using namespace std; 

int main() { 
    vector<int> vect_name; 
    for (int i = 10; i < 21; i = i + 2) { 
     vect_name.push_back(i); 
     cout << vect_name[i] << endl; // Will print zeroes 
    } 
    return 0; 
} 

しかし、これは配列/ベクトルがC++でインデックス付けされているため、これでも間違った結果が得られます。別のループで印刷する必要があります。

コードの正しいバージョンを使用すると、エラーをしてください共有することができ

#include <iostream> 
#include <vector> 
using namespace std; 

int main() { 
    vector<int> v(6, 10); 
    for (int i = 0; i < v.size(); i++) { 
     v[i] += (i * 2); 
     cout << v[i] <<endl; 
    } 
    return 0; 
} 

出力

10 
12 
14 
16 
18 
20 
関連する問題