使用数组中的值,包含多个向量

时间:2017-03-15 18:45:28

标签: c++ arrays vector cout

所以基本上我创建了一个包含两个向量的数组,我希望能够更改/输出值。我已经读过以下语法应该可以工作,但是当我运行程序时,它只是在不打印任何东西的情况下不断填充内存。

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

我不明白它为什么不开始打印,只是继续加载?

2 个答案:

答案 0 :(得分: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] << " ";

即使您提到向量大小相同,但实际上并不是这样编写循环的方法。

答案 1 :(得分:1)

你没有在第一个循环中递增i

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

注意i+2应为i+=2