【问题标题】:Printing Vector Array with push_back [duplicate]使用 push_back 打印向量数组 [重复]
【发布时间】:2017-12-13 20:41:00
【问题描述】:

我正在尝试使用向量和 for range 循环显示动态数组输入的值,但是当它打印时显示的是 0,然后是输入的值。

请不要介意 if 语句,因为我将其注释掉以在测试时使用较小的样本量。但是,如果我输入大小说它的 3,那么输入值,例如 1,2,3,输出将是 0 0 0 1 2 3。我正在尝试删除前三个 0。

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

【问题讨论】:

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


【解决方案1】:

这一行创建了一个由values 元素组成的向量。

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

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

然后你又推了 3 个元素:

numbers.push_back(collect);

你可以:

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

【讨论】:

  • 感谢您的解释和回答。
【解决方案2】:

只要numbers[index] = collect; 你就很好。你甚至可以试试这个cin &gt;&gt; numbers[index];

【讨论】:

    【解决方案3】:

    你正在使用构造函数

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

    在你的情况下:

    值 = 3

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

    std::vector<int> numbers;
    

    【讨论】:

      猜你喜欢
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 2012-10-24
      • 2012-09-27
      • 1970-01-01
      相关资源
      最近更新 更多