在数组中搜索第一个指定元素
Searching first specified element in array
我试图使函数有一个循环,检查由布尔变量组成的数组的每个成员,并在找到第一个"true"值时退出。
这就是我现在拥有的:
bool solids[50];
int a,i;
//"equality" is a function that checks the equality between "a" and a defined value
solids[0] = equality(a,&value_1);
solids[1] = equality(a,&value_1);
solids[2] = equality(a,&value_1);
solids[3] = equality(a,&value_1);
for (i = 0; solids[i] != true; i++)
{
[...]
}
但是我不知道,我应该把什么放入循环中?
我的尝试是
for (i = 0; i <= 50; i++)
{
if (solids[i] == true)
{
return true;
break;
} else {
return false;
}
}
,应该在第一个发现为真后返回true
,如果数组没有具有true
值的成员则返回false
,但它似乎在代码中不起作用。
错了吗?如果有,是什么问题?
p。:我可以用计数器计算true
s的数量,但这不是问题的最佳解决方案,因为我只是寻找第一个true
值,因此,程序不必检查所有50个成员。Needley计算一下,这意味着要解决多少不必要的步骤。
下面是@chris:
建议的std::find()的一个简短示例bool find_element_in_array() {
bool solids[50];
int length;
/* ... do many operations, and keep length as the size of values inserted in solids */
bool* location = std::find(solids, length, true);
// if element is found return true
if (location != solids + length)
return true;
// else return false
return false;
}
一旦您正确设置了实体(看起来您当前将每个值设置为相同的东西),您可以创建一个循环,在第一个true上退出,如下所示:
for (i = 0; i < 50; i++)
{
if (solids[i] == true)
{
return true;
}
}
return false;
我也只是将i
的声明移动到for
循环体中,因为它不在外部使用,但上面回答了您的问题。
return
立即退出函数,因此不需要在之后的循环中执行break
。
如果在搜索之后立即退出函数就足够了,您应该这样写:
for (int i = 0; i < 50; i++) {
if (solids[i]) return true;
}
return false;
如果需要在同一函数中使用搜索结果,请使用附加变量:
bool found = false;
for (int = 0; i < 50; i++) {
if (solids[i]) {
bool = true;
break;
}
}
if (found) { ...
相关文章:
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 为什么在 std::map 上移动无法将元素从一个映射移动到另一个映射
- 如何仅读取文本文件中的第一个值
- 在C++中,如何在第一个"system()"结束后执行第二个"system()"?
- 查找不在标准中的第一个值::设置<int>最小-最大值
- C++:忽略第一个 cin.ignore 之后的输入
- 在C++中打印多个矢量的第一个值
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- C++第一个cout将不会打印
- 我们可以在第一个else-if条件结束后使用另一个else-if条件吗
- OpenGL:第二个VBO破坏了第一个VBO
- 为什么第一个Dynamic_cast没有投射到基类?
- OpenGL 2D游戏只绘制第二个精灵纹理而不是第一个
- C++ 为什么程序只读取第一个值
- 在我的第一个C++程序中需要一些帮助(简单)
- 将顶部堆栈元素传输到第二个堆栈的第一个
- 获取不等于特定值的向量的第一个N元素
- 如何将std ::映射的第一个N元素复制到另一个地图
- 如何在C中获取char阵列的第一个X元素?提升效果是否有改进的方法