You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:32:04