C++ 向量下标超出范围,但它应该存在

C++ 向量下标超出范围,但它应该存在,c++,class,vector,C++,Class,Vector,我得到了“Gameparty”类的两个成员函数(我用英语为您翻译了所有术语) 他们使用一个Gameparty术语,该术语由每个卡片游戏和视频游戏的向量组成,它们也是类 get_minPlayers/get_maxPlayers是他们班的获得者,并给出每场比赛的min/max玩家数量。 国际单项体育联合会部分应删除实际人数无法玩的所有纸牌游戏/视频游戏。 问题:这段代码产生了一个错误,它向我显示了代码示例1的第一个for循环。“calculateBestCardgame()”正在使用不存在的向量

我得到了“Gameparty”类的两个成员函数(我用英语为您翻译了所有术语) 他们使用一个Gameparty术语,该术语由每个卡片游戏和视频游戏的向量组成,它们也是类

get_minPlayers/get_maxPlayers是他们班的获得者,并给出每场比赛的min/max玩家数量。 国际单项体育联合会部分应删除实际人数无法玩的所有纸牌游戏/视频游戏。

问题:这段代码产生了一个错误,它向我显示了代码示例1的第一个for循环。“calculateBestCardgame()”正在使用不存在的向量

我可以通过减少numberCardgames-1来避免这个错误。这对我来说很奇怪,因为它在另外3个for循环中工作 temp_Cardgames的大小为4

实际的计算还没有实现,但不是我的问题的一部分

谢谢你的帮助

1.:

CardGameParty::calculateBestCardgame(){
vector temp_Cardgames=获取可用的Cardgames();
int guests=get_gaesteliste().size();
int numberCardgames=temp_Cardgames.size();
对于(int i=0;i来宾){
temp_Cardgames.erase(temp_Cardgames.begin()+i);
}
}
numberCardgames=temp_Cardgames.size();
对于(int i=0;i
2.:

Videogame游戏派对::calculateBestVideogame(){
vector temp_Videogames=获取可用的视频游戏();
int guests=get_guestlist().size();
int numberVideogames=temp_Videogames.size();
对于(int i=0;i来宾){
temp\u Videogames.erase(temp\u Videogames.begin()+i);
}
}
numberVideogames=temp_Videogames.size();
对于(int i=0;i
首先,如果temp_Cardgames为空,back()方法可能会导致未定义的行为。看见请更改并更新帖子,添加有关错误的更多详细信息。
    Cardgame Gameparty::calculateBestCardgame(){

    vector <Cardgame> temp_Cardgames = get_availibleCardgames();
    int guests = get_gaesteliste().size();

    int numberCardgames = temp_Cardgames.size();
    for (int i = 0; i < numberCardgames; i++){
        if (temp_Cardgames[i].get_minPlayers() > guests){
            temp_Cardgames.erase(temp_Cardgames.begin() + i);
        }
    }

    numberCardgames = temp_Cardgames.size();
    for (int i = 0; i < numberCardgames; i++){
        if (temp_Cardgames[i].get_maxPlayers() < guests){
            temp_Cardgames.erase(temp_Cardgames.begin() + i);
        }
    }

    Cardgame bestCardgame = temp_Cardgames.back();

    return bestCardgame;
}
    Videogame Gameparty::calculateBestVideogame(){

    vector <Videogame> temp_Videogames = get_availibleVideogames();
    int guests = get_guestlist().size();

    int numberVideogames = temp_Videogames.size();
    for (int i = 0; i < numberVideogames; i++){
        if (temp_Videogames[i].get_minPlayers() > guests){
            temp_Videogames.erase( temp_Videogames.begin()+i );
        }
    }

    numberVideogames = temp_Videogames.size();
    for (int i = 0; i < numberVideogames; i++){
        if (temp_Videogames[i].get_maxPlayers() < guests){
            temp_Videogames.erase(temp_Videogames.begin() + i);
        }
    }
    Videogame bestVideogame = temp_Videogames.back();

    return bestVideogame;
}