错误:类型为<< unresolved重载=“” function =“” type =“”>'和'int'到二进制'operator>'类型的无效操作数if(min> max)

时间:2018-06-29 08:41:43

标签: c++

在编译该程序时出现此错误。这个问题是要找到最小窗口大小的最大值。这是我的代码:

    #include <iostream>

    using namespace std;

    int main() {

            int n;
            cin>>n;
            int a[n];
            for(int i=0; i<n; i++)
            {
                cin>>a[i];//to take input as array
            }
            for(int k=1; k<=n; k++)
            {
                int max=0;
                for(int i=0; i<n-k; i++)
                {
                    int min=a[i];
                    for(int j=0; j<k; j++)
                    {
                        if(a[i+j]<min)
                        {
                            min=a[i+j];
                        }
                    }
                }
               if(min > max)
               {
                   max=min;
               }
                cout<<max<<" ";
            }

        return 0;
    }

1 个答案:

答案 0 :(得分:3)

您通过std::minstd::max的局部声明来隐藏(阴影)int maxint min函数。但是,这种阴影只发生在声明这些变量的局部范围内。

离开范围时,外部名称将再次可见:

        int max=0;                  // <-- Here max hides std::max
        for(int i=0; i<n-k; i++)
        {
            int min=a[i];          // <-- Here min hides std::min
            for(int j=0; j<k; j++)
            {
                if(a[i+j]<min)
                {
                    min=a[i+j];
                }
            }
        }                       // <-- But here the local min goes away again

       if(min > max)            // <-- And here min is std::min, a function

因此,编译器认为min > max是将int与函数模板进行比较。而且它看不到该怎么做。

这是为什么认为使用using namespace std;不好的原因之一。