我正在编写一个程序,我想在其中画一张卡片,然后删除它,这样它就不会再次被画出来。
我有一个卡片向量(包含定义 Suit 和 Value 的 2 个结构的类),称为deck,我真的不知道如何很好地使用迭代器,这里有一个代码片段:
void Player::discardCard(CardDeck masterDeck)
{
cout << "Erasing: " << masterDeck.getDeck().at(cardSelect).toString() << endl;
/*Attempt1*/
masterDeck.getDeck().erase(masterDeck.getDeck().begin()+cardSelect);
/*Attempt 2*/
vector<Card>::iterator itr;
itr = masterDeck.getDeck().begin() + cardSelect;
masterDeck.getDeck().erase(itr);
}
cardSelect 有我要删除的卡片的位置。它是在0和deck大小的边界内随机生成的;因此它不应该指向一个超出边界的位置。
每次编译时都会出现以下错误:
"Expression: vector erase iterator outside range"
我真的不知道该怎么办,希望有人能帮助我,提前谢谢!