我有一個程序,提示用戶輸入一個值。用戶輸入的每個值都放入一個向量'other'中,這個值只用於驗證。如果輸入了重複值,則用戶將得到一個提示,直到他們輸入唯一值。防止重複進入矢量? C++
我面臨的主要問題是,由於某些原因,在運行代碼並打印出矢量結果時,似乎有重複條目。誰能告訴我爲什麼?
請參閱以下我的代碼:
// prompt to continue
cout << "Would you like to continue? [Y]es, [N]o: ";
cin >> toContinue;
while (toContinue == 'Y')
{
bool isDuplicate = 0;
// prompt for product no.
cout << "Please enter product number: ";
cin >> productB;
// Validation check for duplicate entries
for (size_t i = 0; i < other.size(); i++)
{
if (productB == other[i])
isDuplicate = 1;
while (isDuplicate == 1)
{
cout << "You have already entered this product number!" << endl;
cout << "Please enter correct product number: ";
cin >> productB;
if (productB != other[i])
other.push_back(productB);
isDuplicate = 0;
}
}
// prompt to continue
cout << "Would you like to continue? [Y]es, [N]o: ";
cin >> toContinue;
}
改爲使用'std :: set'。 – user0042
你可能想用調試器來瀏覽你的程序。提示:當我輸入'3 4 3'時會發生什麼? – Rakete1111
檢測到重複項目後,您要求用戶重新輸入。您可以根據之前輸入的一個號碼檢查此新號碼,但不能對所有先前輸入的號碼進行檢查。所以說,用戶再次輸入「1」,然後輸入「2」,然後輸入「1」。您檢測到重複並要求重新輸入。他們輸入'2',你只檢查'2!= 1',並愉快地將第二個'2'加到向量中。 –