使用push_back打印矢量数组

时间:2017-07-10 07:51:57

标签: c++ arrays loops c++11 vector

我试图使用矢量和范围循环显示动态数组输入的值,但是当它打印时显示0' s然后是输入的值。

请注意if语句,因为我在测试时使用较小的样本量。但是如果我输入大小说它的3然后输入值如1,2,3输出将是0 0 0 1 2 3.我试图删除前三个0' s。

int main()
{
    std::cout << "How many numerical values do you wish to enter: ";
    int values, index, collect;
    std::cin >> values;
    std::vector<int> numbers(values);
    //if(values == 31)
    //{
        for (index = 0; index < values; index++)
        {
            std::cout << "Enter value[" << (index + 1) << "]: ";
            std::cin >> collect;
            numbers.push_back(collect);
        }
        for (auto &showNumbers : numbers)
        {
            std::cout << showNumbers << " ";
        }
    //}

    return 0;
}

3 个答案:

答案 0 :(得分:1)

此行创建values元素的向量。

std::vector<int> numbers(values);

当您将3作为values输入时,该向量将包含值为0的三个元素。

然后你又推了3个元素:

numbers.push_back(collect);

你可以:

  1. std::vector<int> numbers(values);替换为std::vector<int> numbers;(这将创建空向量)或
  2. numbers.push_back(collect);替换为numbers.at(index) = collect;(这将设置元素值)

答案 1 :(得分:0)

numbers[index] = collect;,你很好。你甚至可以试试cin >> numbers[index];

答案 2 :(得分:0)

您正在使用

中的构造函数
O(n)

在你的情况下:

  

values = 3

将前3个内容设置为零。然后使用push_back进一步添加值。您必须将向量声明为:

std::vector<int> numbers(values);