Algorithm 版 (精华区)
发信人: Lerry (life is waiting...), 信区: Algorithm
标 题: [合集]max() 函数在C++中怎么定义?
发信站: 哈工大紫丁香 (2004年03月28日15:38:58 星期天), 站内信件
────────────────────────────────────────
jijian (CC) 于 2004年03月26日12:14:02 星期五 说道:
在C中stdlib中有宏定义
可是在C++中包含之后不好用
怎么办?
────────────────────────────────────────
Taliux (彻夜孤灯) 于 2004年03月26日12:30:10 星期五 说道:
用stl的
template<class Type>
const Type& max(
const Type& _Left,
const Type& _Right
);
template<class Type, class Pr>
const Type& max(
const Type& _Left,
const Type& _Right,
BinaryPredicate _Comp
);
#include <algorithm>
────────────────────────────────────────
jijian (CC) 于 2004年03月26日13:56:39 星期五 说道:
好像不行
编译不过
D:\lagu\hit1034.cpp(41) : error C2065: 'max' : undeclared identifier
我是这么用的
mmax = max(a,b);
────────────────────────────────────────
Taliux (彻夜孤灯) 于 2004年03月26日14:16:25 星期五 说道:
a,b是啥?
────────────────────────────────────────
Taliux (彻夜孤灯) 于 2004年03月26日14:34:39 星期五 说道:
要#include<algorithm>
────────────────────────────────────────
Taliux (彻夜孤灯) 于 2004年03月26日14:35:50 星期五 说道:
还不如自己写一个
#define MAX(A,B) ( (A) > (B) ? (A):(B))
呵呵
────────────────────────────────────────
jijian (CC) 于 2004年03月26日14:39:57 星期五 说道:
a b 都是整数
────────────────────────────────────────
jijian (CC) 于 2004年03月26日14:41:54 星期五 说道:
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
int main()
{
int a=5,b=10;
printf("%d\n",max(a,b));
while(1);
return 0;
}
E:\test.cpp(10) : error C2065: 'max' : undeclared identifier
VC下不行
dev下可以
────────────────────────────────────────
Taliux (彻夜孤灯) 于 2004年03月26日15:02:38 星期五 说道:
sigh
vc支持c++支持的太烂了
────────────────────────────────────────
Amia (小羊·耗子她爹) 于 2004年03月26日16:34:32 星期五 说道:
VC下include stdlib就有max了
────────────────────────────────────────
jijian (CC) 于 2004年03月26日18:19:14 星期五 说道:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a=3,b=78;
printf("%d\n",max(a,b));
return 0;
}
E:\test.cpp(11) : error C2065: 'max' : undeclared identifier
────────────────────────────────────────
worldguy (蓝色天际) 于 2004年03月27日17:15:02 星期六 说道:
在VC中,得用_MAX或_cpp_max代替max。
引自MSDN April 2001
Microsoft-Specific:
To avoid conflicts with min and max in WINDEF.H, use _MIN and _MAX instead. These macros evaluate to _cpp_min and _cpp_max, respectively.
END Microsoft-Specific
下面的代码取自xutility
...
#ifndef _MAX
#define _MAX _cpp_max
#define _MIN _cpp_min
#endif
template<class _Ty> inline
const _Ty& _cpp_max(const _Ty& _X, const _Ty& _Y)
{return (_X < _Y ? _Y : _X); }
// TEMPLATE FUNCTION max WITH PRED
template<class _Ty, class _Pr> inline
const _Ty& _cpp_max(const _Ty& _X, const _Ty& _Y, _Pr _P)
{return (_P(_X, _Y) ? _Y : _X); }
....
────────────────────────────────────────
jijian (CC) 于 2004年03月28日10:21:51 星期天 说道:
果然好用
3x
────────────────────────────────────────
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.888毫秒