提问人:shadowz123123 提问时间:7/4/2023 最后编辑:Vlad from Moscowshadowz123123 更新时间:7/4/2023 访问量:94
为什么我的代码没有输出向量的第一个元素,而是输出所有其他元素?[已结束]
Why is my code not outputting the first element of my vector, but outputs all the others? [closed]
问:
此代码要求用户输入值,将值插入到向量中,然后输出它,但由于某种原因不显示第一个元素,而是显示所有其他元素。
这可能是非常愚蠢的事情,但我对学习 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] << " ";
}
答:
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 循环,例如i
int
int
for ( const auto &item : l ) {
cout << item << " ";
}
评论
0赞
shadowz123123
7/4/2023
啊,是的,就是那个,我真傻哈哈。感谢它!
0赞
user4581301
7/5/2023
@shadowz123123你会发现,你可以通过使用调试器逐步检查代码中的问题区域,观察发生的情况,并将其与你的期望进行比较,从而消除大量愚蠢的错误。当一行代码没有完全按照你认为它应该做的事情去做时,你可能已经发现了一个错误,既然你知道这一行应该做,你应该对你需要做什么有一些好主意。
评论
std::cout << l.size();