我有2个数组分别称为xValyVal

我正在使用这些数组作为坐标。我要做的是确保数组不包含2套相同的坐标。

可以说我的数组如下所示:

int xVal[4] = {1,1,3,4};
int yVal[4] = {1,1,5,4};


在这里,我想找到xVal[0] yVal[0]xVal[1] yVal[1]之间的匹配项,即2套相同的坐标,称为1,1。

我用forLoop尝试了一些不同的操作,但是我无法使其按预期工作。

最佳答案

您可以使用两个for循环来做到这一点:

int MAX=4; //number of elements in array
for (int i=0; i<MAX; i++)
{
    for (int j=i+1; j<MAX; j++)
    {
        if (xVal[i]==xVal[j] && yVal[i]==yVal[j])
        {
            //DUPLICATE ELEMENT at xVal[j], yVal[j]. Here you implement what
            //you want (maybe just set them to -1, or delete them and move everything
            //one position back)
        }
    }
}


小小的解释:第一个变量i的值为0。比起将j遍历所有可能的数字。这样,您可以将xVal [0]和yVal [0]与所有其他值进行比较。 j从i + 1开始,因为您不需要在i之前比较值(它们已经被比较)。

编辑-您应该考虑编写代表点或至少结构的小类,并使用std :: vector而不是数组(在中间删除元素更容易)。那应该使您的生活更轻松:)

07-22 04:22