Я пытаюсь стереть определенные элементы из вектора OrderPair во время итерации, но это не работает так, как я ожидаю. Я пытаюсь удалить каждый OrderPair
с id
(первым), равным customer_Id
. Я делаю следующее:
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
.
Что я здесь не так делаю?
Заранее спасибо.