目标:此代码计算数字之间的距离(每个数字是任何城市的位置)我编写了代码,但当我使用“算法”库中包含的“min”函数时,“表达式必须具有(指针 - to-)函数类型“将发生错误。
这是一个代码:
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int noc, ele, min, max,arr[100];
cin >> noc;
for(int i = 0;i < noc;i++)
cin >> arr[i];
for(int i = 0;i < noc;i++){
if(i == 0)
cout << abs(arr[0] - arr[1]) << " " << abs(arr[0] - arr[noc - 1]) << endl;
else if(i == noc - 1)
cout << abs(arr[noc - 1] - arr[noc - 2]) << " " << abs(arr[noc - 1] - arr[0]);
else{
min(4 ,5 ,6);
}
}
return 0;
}
答案 0 :(得分:3)
您有两个问题:
名为min
的变量会影响std
命名空间中的函数。出于这个原因,你通常不应该写using namespace std;
。
std::min
不会使用三个参数来返回最小的,只有两个。你可以对它进行链接调用,或者在C ++ 11中你可以使用初始化列表重载:
std::min(std::min(4,5),6);
//or
std::min({4,5,6});
答案 1 :(得分:1)
您还使用min
作为变量名,并且由于您已将std
命名空间中的所有符号都放在using namespace std
的全局命名空间中,您认为可以使用{ {1}}没有为min
添加前缀。
但是因为还有一个名为min的局部变量,它优先。
tldr:不要使用std::
,也不要将局部变量命名为全局函数。