为什么我的代码没有输出向量的第一个元素,而是输出所有其他元素?[已结束]

Why is my code not outputting the first element of my vector, but outputs all the others? [closed]

提问人:shadowz123123 提问时间:7/4/2023 最后编辑:Vlad from Moscowshadowz123123 更新时间:7/4/2023 访问量:94

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

5个月前关闭。

此代码要求用户输入值,将值插入到向量中,然后输出它,但由于某种原因不显示第一个元素,而是显示所有其他元素。

这可能是非常愚蠢的事情,但我对学习 c++ 很陌生,只是试图改进向量,但似乎无法得到这个。

double x;
vector<double> l;
cout << "Enter a list of numbers: ";
cin >> x;
while (cin >> x) {
    l.push_back(x);
}
for (auto i = 0; i < l.size(); ++i) {
    cout << l[i] << " ";
}
C++ 输入 while-loop stdvector

评论

3赞 Some programmer dude 7/4/2023
你在哪里读到第一个数字?你在用它做什么?请向您的橡皮鸭详细解释您的代码。
0赞 463035818_is_not_an_ai 7/4/2023
尝试。您的代码确实打印了向量的所有元素std::cout << l.size();

答:

1赞 Vlad from Moscow 7/4/2023 #1

在 while 循环之前出现的变量的第一个输入x

cin >> x;
while (cin >> x) {

只是被忽略了。

删除此语句

cin >> x;

在 while 循环之前。

还要注意这个for循环中的这一点

for (auto i = 0; i < l.size(); ++i) {
    cout << l[i] << " ";
}

该变量被定义为具有 signed 类型。但是,通常,有符号类型的对象可能不够大,无法表示向量的大小。因此,最好使用基于范围的 for 循环,例如iintint

for ( const auto &item : l ) {
    cout << item << " ";
}

评论

0赞 shadowz123123 7/4/2023
啊,是的,就是那个,我真傻哈哈。感谢它!
0赞 user4581301 7/5/2023
@shadowz123123你会发现,你可以通过使用调试器逐步检查代码中的问题区域,观察发生的情况,并将其与你的期望进行比较,从而消除大量愚蠢的错误。当一行代码没有完全按照你认为它应该做的事情去做时,你可能已经发现了一个错误,既然你知道这一行应该做,你应该对你需要做什么有一些好主意。