[英]Vector iterator inconsistent and Expression: cannot seek vector iterator after end
[英]"Expression cannot seek vector iterator after end "
我正在嘗試制作一個非常簡單的記憶游戲,但我遇到了以下向量問題。 表達式在結束后無法尋找向量迭代器,這是我的代碼
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
using namespace std;
void play();
void filler();
char faceup(int);
vector<char> cards (50);
int candy= 0;
int main()
{
filler();
play();
}
char faceup(int C) {
return cards[C];
}
void play() {
int n,l;
char p, s;
for (int i = 0; i < cards.size(); i++)
{
cout << cards[i];
}
cout << endl;
while (candy<50)
{
cout << "choose first card"<<endl;
cin >> n;
cout << "choose second card"<<endl;
cin >> l;
if (l == n) {
cout << "the cards are the same, try it again"<<endl;
}
else
{
p = faceup(n);
s = faceup(l);
cout << "The first card is: " + p;
cout << "The second card is: " + s;
if (s==p)
{
candy++;
cards.erase(cards.begin()+s);
cards.erase(cards.begin() + p);
}
}
}
}
void filler() {
//random_device rd;
//default_random_engine rng(rd());
int accountant = 0;
for (int i = 0; i < cards.size()/2; i++)
{
for (int o = 0; o < 2; o++) {
cards[accountant] = i+65;
accountant++;
}
}
//shuffle(cards.begin(), cards.end(), rng);
}
錯誤發生在我輸入的任何整數上。 我用的是visual studio的編譯器,然后我用的是dev c++。 在所有情況下,我都遇到了相同或類似的錯誤
提前一百萬感謝
在你的代碼中,在第 11 行,你定義了一個長度等於 50 的向量,如果我們給我們的向量一個數字 0 到 49 之外的數字,程序應該不會運行。 您在程序的第 48 行和第 49 行遇到了我上面提到的錯誤。 例如,如果用戶輸入他的卡號 0 和 1,大小 s 和 p 等於 66,並且第 48 和 49 行說要轉到我們的向量索引 66,這會導致運行我們的程序出現問題。
enter code here
//////////error/////////////////////////
cards.erase(cards.begin()+s);
cards.erase(cards.begin() + p);
//////////error/////////////////////////
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.