仅当数组中尚未包含值时,才向数组添加值
Add value to array only if value isn't already in array
到目前为止,我的代码只防止两个以上的重复,但由于某种原因,它确实允许两个值相同。
if (found != string::npos && binarySearch(wrongLetters, used, guessLetter) == -1)
{
wrongLetters[turnNumber] = toupper(guessLetter);
for (int i = 0; i < guessWord.length(); i++)
{
if (guessWord[i] == guessLetter)
maskedWord[i] = guessLetter;
}
}
else if (found != string::npos && binarySearch(wrongLetters, used, toupper(guessLetter)) != -1)
cout << "That letter has already been usednn";
else if (found == string::npos && binarySearch(wrongLetters, used, toupper(guessLetter)) != -1)
cout << "That letter has already been usednn";
else if (found == string::npos && binarySearch(wrongLetters, used, guessLetter) == -1)
{
wrongLetters[turnNumber] = toupper(guessLetter);
cout << guessLetter << " is NOT in the word to guessnn";
incorrectCount++;
}
如果您使用的是命名空间 std,我建议如下:
bool check = find(begin(array), end(array), x) != end(array);
如果未找到 x,find 将返回 1 的位置超过它检查的最后一个位置。
if(!check)
*add the element*
如果它是动态的,我建议使用向量。
使用正确的工具来完成工作,在这种情况下(如@tobi303指出的那样(,一个本质上可以防止容器内存在同一项目的多个实例的std::set
。
在您的情况下,您可以了解插入是否成功,如果插入不成功,则打印通知:
if(!letters.insert(letter).second) std::cout << "That letter has already been usedn";
其中letters
是std::set<char>
(假设它是您问题中的char
容器,并不完全清楚(,letter
是您尝试插入的char
。 std::set::insert
返回一个std::pair
,其第二个值是指示插入是否成功的bool
。
相关文章:
- C++向数组添加元素并调整数组大小
- 向对象数组 c++ 添加值
- 在 c++ 中将 Char 数组添加到 Char * 变量
- 向动态数组添加内容
- 动态数组添加元素而不创建结构变量/对象
- 将 2D 数组添加到 1D 数组
- 如何使用sprintf将UINT_64的数组添加到一个字符数组中
- 当循环崩溃时,不向数组添加单词
- 如何将对象数组添加到另一个类
- 将字符数组添加到 const string&in C++
- 如何将数组添加到列表中
- 向量数组C++ - 添加元素时的奇怪行为
- 将char数组添加到C 中的字符串
- strncpy向我的char数组添加了额外的字符
- 在C++中向数组添加项的最有效方法
- 将类对象的数组添加到一个主类对象中
- 将BSON数组添加到MongoDB 3.2文档并提取值(MongoCXX 3.2)(C++11)
- 我是否正确地为 2D 数组添加了行与列
- 读取文件内容,存储在数组中,向数组添加更多内容,然后将新数组存储在文件C++中
- C++类对象数组 - 添加新记录