C++代码为何无法输出vector首元素,其余元素可正常输出?
问题分析与解决
你的代码问题很直接——第一个输入的数值被丢弃了,根本没存入vector里,所以输出时看不到首元素。
问题根源
代码开头的cin >> x已经读取了用户输入的第一个数值,但你没有执行l.push_back(x)把它加入vector。紧接着的while (cin >> x)会读取第二个及之后的数值,每读一个就存入vector,自然首元素就丢了。
修正方案
方案一:直接用while循环读取所有输入(推荐)
删掉开头单独的cin >> x,让while循环从第一个输入开始处理:
double x; vector<double> l; cout << "Enter a list of numbers: "; while (cin >> x) { l.push_back(x); } for (auto i = 0; i < l.size(); ++i) { cout << l[i] << " "; }
这样每成功读取一个数值,就立刻存入vector,不会漏掉任何元素。
方案二:保留首次读取逻辑(需补充存入操作)
如果想先读一次再进入循环,记得把第一次读取的数值也加入vector:
double x; vector<double> l; cout << "Enter a list of numbers: "; if (cin >> x) { // 先读取第一个值,成功则存入vector l.push_back(x); while (cin >> x) { // 继续读取后续所有值 l.push_back(x); } } for (auto i = 0; i < l.size(); ++i) { cout << l[i] << " "; }
这里加了if判断是为了处理用户直接输入无效内容的情况,避免空读取导致的问题。
内容的提问来源于stack exchange,提问作者shadowz123123
相关产品推荐
相关产品推荐

