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毫秒