【发布时间】:2018-11-09 06:58:48
【问题描述】:
我试图在迭代时从 OrderPair 向量中删除特定元素,但它并没有像我预期的那样工作。我正在尝试使用等于customer_Id 的id(第一个)删除每个OrderPair。我执行以下操作:
for(std::vector<OrderPair>::iterator i = source_Orders.begin(); i != source_Orders.end();)
{
if((*i).first == customer_Id)
{
dest_Orders.push_back(*i);
i = source_Orders.erase(i);
}
else
{
i++;
}
}
// definition of OrderPair
typedef std::pair<int, Dish> OrderPair;
// definition of OrderPair
enum DishType{
VEG, SPC, BVG, ALC
};
// definition of OrderPair
class Dish{
private:
const int id;
const std::string name;
const int price;
const DishType type;
};
当迭代器指向一个符合if 条件的元素时(我可以在调试时看到它指向正确的元素),命令dest_Orders.push_back(*i); 正在按预期工作,那么我正在尝试删除我移动到dest_Orders 的元素,并继续进行下一次迭代。但是,结果是删除了向量 source_Orders 中的最后一个元素。
我在这里做错了什么?
提前致谢。
【问题讨论】:
-
你能提供一个minimal reproducible example吗?