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
相关产品推荐
相关产品推荐

