我试图使用矢量和范围循环显示动态数组输入的值,但是当它打印时显示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;
}
答案 0 :(得分:1)
此行创建values
元素的向量。
std::vector<int> numbers(values);
当您将3
作为values
输入时,该向量将包含值为0
的三个元素。
然后你又推了3个元素:
numbers.push_back(collect);
你可以:
std::vector<int> numbers(values);
替换为std::vector<int> numbers;
(这将创建空向量)或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);