【发布时间】:2019-12-16 20:55:55
【问题描述】:
首先抱歉代码太多
这里有一个类型为class的vector(teamNum),该class包含一个struct类型的vector(player),有点复杂,但是在这个函数中我需要检查teamNum中是否有player包含 tName 等于 _tname(函数参数) 包含(播放器)pID 等于 _pID(函数参数)
bool thereIsSimilarID(string _tname, int _pID)
{
for (int i = 0; i < teamNum.size(); i++)
{
if (teamNum[i].tName == _tname)
{
for (int j = 0; j < teamNum[i].player.size(); j++)
{
if (teamNum[i].player[j].pID == _pID)
return true;
}
}
else if (i == (teamNum.size() - 1))
{
return false;
}
}
}
主要是
int main()
{
cout << "\n" << thereIsSimilarID("Leverpool", 1) << endl;
}
输出是 24 !!!!!! (请注意,这只发生在球队(Leverpool)是向量 teamNum 中的最后一支球队时)
再次抱歉代码太多,但我需要知道错误不仅解决了我需要向你学习的问题
【问题讨论】:
-
[Off Topic] 去掉
else if (i == (teamNum.size() - 1)) { return false; },把return false;放在for循环后面。 -
你能提供一个minimal reproducible example吗?
-
如果
teamNum.size() == 0怎么办?整个for循环被跳过,返回值是---¯\_(ツ)_/¯。实际上,行为是未定义的。 -
您的编译器应该警告您存在不会导致
return语句的代码路径。返回值在这些路径中是未指定。