在此程序中获取错误:检查两个数组是否相等?

时间:2017-04-04 09:12:15

标签: c++ compiler-errors

在编译程序时会弹出一个错误,我无法弄清楚它是什么:"没有匹配函数调用_distance_fw(int&,int&)"。 在这个问题中,我试图检查两个数组在它们包含的值方面是否相等。

#include<iostream>
#include<algorithm>
#include<unordered_map>

using namespace std;

unordered_map<int,int> bucket;
unordered_map<int,int>::const_iterator it;

int main()
{
    int T,N,val,counter;
    int def=1;
    bool bug;
    scanf("%d",&T);
    {
        for(int i=0;i<T;i++)
        {
            scanf("%d",&N);   //N is the size of array
            counter=N;
            bucket.erase(bucket.begin(),bucket.end());
            for(int j=0;j<2;j++)
            //scanning the first array
            {
                while(counter>0)
                {
                    if(j==0)
                    {
                        scanf("%d",&val);
                        it=bucket.find(val);
                        if(it==bucket.end())
                        {
                            bucket.insert(val,def);
                        }
                        else
                        {
                            bucket[val]++;
                        }
                    }
                    else
                    {
                        scanf("%d",&val);
                        it=bucket.find(val);
                        if(it!=bucket.end())
                        {
                            bucket[val]--;
                        }
                        else
                        {
                            bug=true;
                        }
                    }
                    counter--;
                }
                if(bug==true)
                {
                    cout<<"0"<<endl;
                }
                else
                {
                    for(it=bucket.begin();it!=bucket.end();it++)
                    {
                        if(it->second!=0)
                        {
                            cout<<"0"<<endl;bug=true;break;
                        }
                    }
                    if(bug==false)
                    {
                        cout<<"1"<<endl;
                    }
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您只需要更改

bucket.insert(val,def)

分为:

bucket.insert({val,def})

std::unordered_map::insert需要std::unordered_map::value_type,在这种情况下为std::pair<const int int>

请更好地格式化您的代码。