2017-03-15 42 views
0

所以基本上我創建了一個包含兩個向量的數組,並且我希望能夠更改/輸出值。我讀過下面的語法應該可以工作,但是當我運行程序時,它只是在不打印任何東西的情況下填充內存。使用數組中的值,包含多個向量

#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

你是不是增加我在第一圈

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

通知i+2應該i+=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