2017-03-15 16 views
0

基本的に2つのベクトルを含む配列を作成しました。値を変更/出力できるようにしたいと考えています。私は次の構文がうまくいくはずだと読んだことがあるが、プログラムを実行すると、何も印刷せずにメモリがいっぱいになってしまう。複数のベクトルを含む配列からの値を扱う

#include <iostream> 
#include <array> 
#include <vector> 

int main() { 
    std::array<std::vector<float>, 2> endPieceV; 

    for (int i = 0; i < 20; i+2) { 
     endPieceV[0].push_back(i); 
     endPieceV[1].push_back(i*i+2); 
    } 

    std::cout << "Vector 1:" << std::endl; 
    for (int i = 0; i < endPieceV[0].size(); i++) { 
     std::cout << endPieceV[0][i] << " "; 
    } 

    std::cout << std::endl; 
    std::cout << std::endl; 

    std::cout << "Vector 2:" << std::endl; 
    for (int i = 0; i < endPieceV[0].size(); i++) { 
     std::cout << endPieceV[1][i] << " "; 
    } 
system("pause"); 
return 0; 
} 

印刷が開始されない理由は分かりませんが、読み込みを続けるだけですか?

答えて

1

あなたが最初のループでIをインクリメントしていない

for (int i = 0; i < 20; i+2) { 
     endPieceV[0].push_back(i); 
     endPieceV[1].push_back(i*i+2); 
    } 

お知らせi+2i+=2

+0

あなたは私の一日を保存しました。私は今日ほとんどのソリューションを探し求めてきました。 – bgaard

+0

あなたのお手伝いをすれば答えを記入してください。 – Sniper

+0

私は7分待たなければなりませんが、私はします;) – bgaard

1

このループカウンタがあるが正しくありません:

for (int i = 0; i < 20; i+2) 

あなたはこのループでiをインクリメントしていません。

別の潜在的なエラーは、ループカウンタとして間違ったベクトルを使用していることである:

for (int i = 0; i < endPieceV[0].size(); i++) { 
          //^Wrong, should be 1 
     std::cout << endPieceV[1][i] << " "; 

あなたはベクトルが同じサイズであることを述べていますが、これは本当にループを記述するための方法ではありませんこのような。それは誤りではありません -

+0

ベクターは、同じ大きさでなければなりません。 – bgaard

+0

@bgaardこれらのベクトルのそれぞれは、サイズ変更可能であり、お互いに独立しています。はい、おもちゃプログラムを書いたことがありますが、このようなコードを書くのは間違いです。ベクトルのサイズが同じであることを確認したい場合は、想定しないでください。 – PaulMcKenzie

+0

ありがとう、私はコマンドを次回使用する際には、そのことを覚えておきます。 – bgaard

関連する問題