如何解决对于某些输入而非其他输入,推入和比较向量中的元素似乎超出范围
另一个问题是我个人的理解和发展,而不是家庭作业等。
我花了2到3个小时的大部分时间来编写一个小游戏,该游戏让用户猜测一系列4位数字,然后将其存储在矢量中并与硬编码的“答案”矢量进行比较。如果用户得到一个数字以及正确的数字位置,他们将收到输出“ 1 Bull”,如果输入正确的数字但在错误的位置,他们将收到输出“一头牛”。如果所有4个数字都猜对了,他们将看到“ 4个多头”,输入将结束。
这适用于大多数输入,但是有一些麻烦的输入,例如“ 1 2 6 4”,这会导致其中一个向量抛出out_of_range错误,但我无法解释为什么我不尝试访问任何超出此范围的元素第三。
int main()
{
std::vector<int> answers{ 1,2,3,4 };
std::vector<int> guesses{};
compare(answers,guesses);
}
void compare(std::vector<int> answers,std::vector<int> guess)
{
int bull{ 0 };
int cow{ 0 };
int input{};
while (bull != 4)
{
bull = 0;
cow = 0;
for (int i{}; i < answers.size(); ++i)
{
std::cin >> input;
guess.push_back(input);
}
for (int first{}; first < answers.size(); ++first)
{
for (int second{ 0 }; second < answers.size(); ++second)
{
if (answers[first] == guess[first])
{
++bull;
++first;
}
else if (answers[first] == guess[second])
++cow;
}
}
guess.clear();
std::cout << bull << " bull and " << cow << " cow\n";
}
}
有人能发现为什么会这样吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。