Я создал функцию, которая получает ряд догадок (последовательность цветов) от пользователя и помещает их в вектор, и эта функция вызывается внутри цикла while в main().Вектор не очищается
Каждый раз, когда он вызывается циклом while, предположение должно быть очищено перед повторным наполнением входами. Однако во втором цикле ввод цвета, который я ввел во время первого цикла, активирует мое сообщение об ошибке («Недопустимая или повторяющаяся запись цвета ...»), предполагая, что вектор не был успешно очищен.
Я попытался очистить его пространством, различными строками и т. Д., Но ничто, кажется, не очистило его. Что мне не хватает?
Функция:
void getGuess(vector<string> ¤tGuessPegs, vector<string> &colorChoices, int maxPegSlots) {
string input; // stores input temporarily
// ---clear previous guess---
for (int i = 0; i < maxPegSlots; i++) {
currentGuessPegs[i] == "";
}
// ---prompt player for each peg guess and store in currentGuessPegs---
for (int i = 0; i < maxPegSlots; i++) {
cout << "Peg " << i+1 << ": ";
cin >> input;
while (find(currentGuessPegs.begin(), currentGuessPegs.end(), input) != currentGuessPegs.end() // Loops if color entry has already been used
|| find(colorChoices.begin(), colorChoices.end(), input) == colorChoices.end()) { // or is an invalid choice
cout << "Invalid or repeated color entry. See color choices and re-enter a color you have not used.\n";
cout << "Peg " << i + 1 << ": ";
cin >> input;
}
currentGuessPegs[i] = input;
}
}
А вот мой вызов функции из основной():
// ---get and check guesses until maximum # of guesses is exceeded or solution is guessed---
while (guessCount < maximumGuesses && solutionGuessed == false) {
getGuess(currentGuess, colorOptions, numberOfPegs); // get the guess
solutionGuessed = checkGuess(currentGuess, solution, numberOfPegs, red, white); // check the guess; returns true if solution was guessed
cout << "r: " << red << " w: " << white << endl << endl;
guessCount++;
}
_ «Я попытался очистить его пространством, различными строками и т. Д., Но, похоже, ничего не очищает. Что мне не хватает?» _ CurrentGuess.clear() 'может быть? –
Если я использую .clear(), он освобождает место, которое я выделил для своего вектора. – user1861051
Используйте 'push_back()' вместо того, чтобы заранее прорисовывать свой вектор. –