C++ 比较C+中两个数组的2个元素+;

C++ 比较C+中两个数组的2个元素+;,c++,arrays,function,compare,C++,Arrays,Function,Compare,我有两个数组,每个数组都有一些值,例如: int a[] = {1, 2, 3, 4}; int b[] = {0, 1, 5, 6}; 现在我需要比较数组(a)中的元素和数组(b)中的元素。。 如果存在任何匹配项,程序应返回错误或打印“错误存在重复值”等。。 在上述情况下,它应该返回一个错误,因为它们都有相同的值 我该怎么做呢???如果阵列这么小,我只需要使用蛮力方法,并在两个阵列之间循环: for (int i=0;i<4;++i) { for (int j=0;j<

我有两个数组,每个数组都有一些值,例如:

int a[] =  {1, 2, 3, 4};
int b[] =  {0, 1, 5, 6};
现在我需要比较数组(a)中的元素和数组(b)中的元素。。 如果存在任何匹配项,程序应返回错误或打印“错误存在重复值”等。。 在上述情况下,它应该返回一个错误,因为它们都有相同的值


我该怎么做呢???

如果阵列这么小,我只需要使用蛮力方法,并在两个阵列之间循环:

for (int i=0;i<4;++i)
{
    for (int j=0;j<4;++j)
    {
        if (a[i] == b[j])
        {
            // Return an error, or print "error there is a duplicate value" etc
        }
    }
}

for(int i=0;i假设两个数组都已排序,您可以按如下方式对它们进行单步排序:

// int array1[FIRSTSIZE];
// int array2[SECONDSIZE];
for(int i=0, j=0; i < FIRSTSIZE && j < SECONDSIZE; ){
    if(array1[i] == array2[j]){
        cout << "DUPLICATE AT POSITION " << i << "," << j << endl;
        i++;
        j++;
    }
    else if(array1[i] < array2[j]){
        i++;
    }
    else{
        j++;
    }
}
//int-array1[FIRSTSIZE];
//int array2[第二尺寸];
对于(int i=0,j=0;icout已发布排序数组的解决方案。如果数组未排序,您可以从每个数组中构建一个集合(例如,
std::set
或哈希集合),并查看集合是否不相交。您可能必须在集合中存储值-索引对,以找出重复的索引(并适当地重载比较运算符)。这可能会导致O(n logn)的复杂性。

//v={1,2,3,4};vector
//v={1,2,3,4};  vector
//v1={1,2,3,4}  vector

  bool f=0;
    if(equal(v.begin(),v.end(),v1.begin()))  //compare two vector, if equal return true
    {
        f=1;
    }

    }
    if(f==1)
        cout<<"Yes"<<endl;
    else cout<<"No"<<endl;

        enter code here
//v1={1,2,3,4}向量 boolf=0; if(equal(v.begin(),v.end(),v1.begin())//比较两个向量,如果equal返回true { f=1; } } 如果(f==1)
请注意,这是一个二次复杂度算法,不适用于大型数据集。谢谢,我刚刚添加了标志,并在循环if-else stations and done之后添加:)谢谢,我喜欢这个答案。我应该注意:散列集是在TR1.std::TR1::unordered_集中实现的,boost::unordered_集。TR1是在GCC和visualstudio中实现的,所以std::TR1::unordered_集应该是“足够标准的”。假设在unordered_集中一切正常,您应该能够在O(n)中实现这一点。