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

C++空vector调用push_back后无法存储数据求助

问题分析与解决:vector无法存储Car对象的问题

核心错误点

你的addData函数逻辑完全错误,导致初始为空的vector根本无法添加元素:

  • 当carVect初始为空时,carVect.size()返回0,for循环的条件i < 0不成立,循环体直接跳过,程序走到最后输出"There are no open Elements in the array",完全没执行push_back操作。
  • 你误解了vector的工作方式:vector是动态容器,不需要预先分配空间或寻找"空位",直接调用push_back就能在尾部添加新元素,容器会自动处理扩容。

修正后的addData函数

bool addData(vector<Car>& carVect){
    Car carObj;
    cout << "Make of car, and price of car, separated by spaces: ";
    cin >> carObj.carMake >> carObj.carPrice; 
    // 直接添加新元素,无需遍历查找空位
    carVect.push_back(carObj); 
    cout << "Car Entry Added" << endl;
    return true;
}

额外注意事项

  • 原函数存在未定义行为:当走到循环外的分支时,函数没有返回值,修正后的代码确保所有执行路径都返回bool类型值。
  • 如果需要避免添加重复品牌的车辆,可以在push_back前遍历vector检查是否存在相同carMake的元素,但这属于额外需求,根据你的场景自行添加即可。

内容的提问来源于stack exchange,提问作者inkystinky33

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:17:07