簡體   English   中英

“表達式不能在結束后尋找向量迭代器”

[英]"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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM