C++循环未输出预期结果:vector数量字段重复打印问题
问题根源
错误出在输出逻辑的变量作用域设置:你把索引变量i的初始化语句int i{0};写在了范围for循环的内部,每一次循环迭代都会重新创建变量i并赋值为0,所以每次获取的都是quantity下标为0的元素(值为10),循环末尾的++i的结果会在下一次迭代被覆盖,无法起到索引递增的作用。
修复方案
方案1:把索引变量的初始化移到循环外部
// Display data int i{0}; for(auto item: items){ cout << "Item: " << item << " - " << "Quantity: " << quantity.at(i) << endl; ++i; cout << "--------------------" << endl; }
方案2:改用普通for循环同步遍历两个等长vector(更推荐)
// Display data // 直接以下标为基准同步取值,逻辑更清晰不易出错 for(int i = 0; i < items.size(); ++i){ cout << "Item: " << items.at(i) << " - " << "Quantity: " << quantity.at(i) << endl; cout << "--------------------" << endl; }
该方案无需手动维护独立的索引计数,后续如果修改录入商品的数量,也不需要手动调整循环终止条件,适配性更强。
内容的提问来源于stack exchange,提问作者Heyale
相关产品推荐
相关产品推荐

