我正在尝试指定一个条件,方法是如果数组不等于数组运行循环。例如:
array1 1,2,3
array2 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
}谢谢各位。
发布于 2015-01-04 19:22:15
如注释所示,您访问超出界限的数组,您将使用赋值(单个=)或比较(==)。
若要比较数组(逐元素),可以使用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))
{
...
}发布于 2015-01-04 19:21:08
在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
}发布于 2015-01-04 19:19:03
您不是使用比较运算符(==),而是使用赋值(=),因此在条件中更改CMean[i]的值,条件只有在prv_mean2之一等于零时才是假的。不,你不能比较整个数组。
https://stackoverflow.com/questions/27769330
复制相似问题