C++ 向量下标超出范围,但它应该存在
我得到了“Gameparty”类的两个成员函数(我用英语为您翻译了所有术语) 他们使用一个Gameparty术语,该术语由每个卡片游戏和视频游戏的向量组成,它们也是类 get_minPlayers/get_maxPlayers是他们班的获得者,并给出每场比赛的min/max玩家数量。 国际单项体育联合会部分应删除实际人数无法玩的所有纸牌游戏/视频游戏。 问题:这段代码产生了一个错误,它向我显示了代码示例1的第一个for循环。“calculateBestCardgame()”正在使用不存在的向量 我可以通过减少numberCardgames-1来避免这个错误。这对我来说很奇怪,因为它在另外3个for循环中工作 temp_Cardgames的大小为4 实际的计算还没有实现,但不是我的问题的一部分 谢谢你的帮助 1.:C++ 向量下标超出范围,但它应该存在,c++,class,vector,C++,Class,Vector,我得到了“Gameparty”类的两个成员函数(我用英语为您翻译了所有术语) 他们使用一个Gameparty术语,该术语由每个卡片游戏和视频游戏的向量组成,它们也是类 get_minPlayers/get_maxPlayers是他们班的获得者,并给出每场比赛的min/max玩家数量。 国际单项体育联合会部分应删除实际人数无法玩的所有纸牌游戏/视频游戏。 问题:这段代码产生了一个错误,它向我显示了代码示例1的第一个for循环。“calculateBestCardgame()”正在使用不存在的向量
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;
}