使用数组作为惠勒循环条件
Using an Array as a Whille loop condition
我试图通过说如果数组不等于数组运行循环来指定一个条件。所以例如:
阵列1 [1,2,3]
阵列2 [1,2,3]
在这里 array1 等于 array2,因为两个数组中 0 中的元素是相同的,两个数组中 1 中的元素是相同的,依此类推......
到目前为止,我的代码似乎不起作用。有没有办法比较两个数组,如果一个数组中的所有元素都与第二个数组中的所有元素匹配,则条件为真。
这是我的测试代码:
int C1Mean[3];
int C2Mean[3];
int prv_mean1[3];
int prv_mean2[3];
while (C1Mean[3] = prv_mean1[3] && C2Mean[3] = prv_mean2[3])
{
//code
}
谢谢伙计们。
如前所述,您越界访问数组,并且使用赋值(单=
)或比较(==
)。
要比较数组(逐个元素),可以使用std::equal
:
while(std::equal(std::begin(C1Mean), std::end(C1Mean), std::begin(prv_mean1))
&& std::equal(std::begin(C2Mean), std::end(C2Mean), std::begin(prv_mean2)))
{
...
}
或者没有 c++11 :
while(std::equal(C1Mean, C1Mean + sizeof C1Mean / sizeof *C1Mean, prv_mean1)
&& std::equal(C2Mean, C2Mean + sizeof C2Mean / sizeof *C2Mean, prv_mean2))
{
...
}
在 c++11 中,你可以使用 std::array
,并使用 ==
:
std::array<int, 3> C1Mean;
std::array<int, 3> C2Mean;
std::array<int, 3> prv_mean1;
std::array<int, 3> prv_mean2;
while (C1Mean == prv_mean1 && C2Mean == prv_mean2)
{
//code
}
您没有使用比较运算符 ( ==
) 而是赋值 ( =
),因此您更改了条件中 CMean[i]
的值,并且仅当其中一个等于零时,条件才会为 prv_mean2
。不,您无法比较整个数组。
如果你能够使用 c++11,你可以使用泛型函数。泛型函数为:
bool equal(beginIterator, endIterator, beginIterator Other);
此泛型函数将比较范围内的所有值。请注意,第二个数组必须至少与第一个数组一样长。
由于数组是一个对象,因此不能使用 arr.begin (),您应该使用 std::begin(arr) 和 std::end(arr)。这些功能附带 #include。
此外,如果你可以使用 c++11,你也可以使用 standad 容器 std::array 或 std::vector。然后你可以只声明 arr1 == arr2。
注意:我在手机上写了这个,并没有检查通用函数是否真的适用于数组。我会再次在家检查这一点,并最终删除我的帖子。
您可以创建一个函数来比较两个数组,如果它们相等,则返回 1,否则返回 0。例如,
while(areEqual(C1Mean,prv_mean1) && areEqual(C2Mean,prv_mean2))
{
//Perform your task
}
哪里
int areEqual(int array1[],int array2[])
{
//compare them and return 1 if equal else return 0;
}
似乎你需要一个双等号("==")。尝试:
while (C1Mean[3] == prv_mean1[3] && C2Mean[3] == prv_mean2[3])
{
//code
}
- 在循环条件 i<sqrtN(预先计算)和 i*i<N 中,C++哪个更有效?
- Leetcode C++用于循环条件
- 在循环条件中调用const vector size()似乎缺少优化
- getline() 在 while 循环条件中如何计算为真或假?
- for 循环条件
- while 循环条件 c++ 中的","有什么用?
- GDB / C++ - 根据循环条件将多个变量记录到输出文件中
- 是否可以在 for 循环条件括号内使用三个分号?
- C++线程退出循环条件
- C 在循环条件下忽略
- 字符在循环条件下执行
- 有没有办法将擦除-删除成语与其他循环条件一起使用
- 我的while循环条件没有像我预期的那样评估它们
- C++ for 循环条件
- 虽然循环条件不起作用
- 虽然循环条件不起作用
- 线程未正确结束:它忽略失败的循环条件
- C++比较两个字符来验证循环条件
- 针对外部标志(cpp)的循环条件的更改
- 引用、逻辑运算符和循环条件