1.假如设计一个求两参数最大值的函数, 在实践中我们可能需要定义四个函数:
int max ( int a , int b ) { return ( a > b ) ? a , b ; }
long max ( long a , long b ) { return ( a > b ) ? a , b ;}
double max ( double a , double b ) { return ( a >b)? a , b ; }
char max ( char a , char b ) { return ( a > b ) ? a , b ;}
2.这些函数几乎相同, 唯一的区别就是形参类型不同
3.需要事先知道有哪些类型会使用这些函数, 对于未知类型这些函数不起作用
multimap:
template<class Key, class T, class Pred = less<Key>, class A =allocator<T> >
class multimap {
….
typedef pair<const Key, T> value_type;
…….
}; //Key 代表关键字
multimap中的元素由<关键字,值>组成,每个元素是一个pair对象。multimap 中允许多个元素的关键字相同。元素按照关键字升序排列,缺省情况下用less<Key> 定
义关键字的“小于”关系
map:
template<class Key, class T, class Pred = less<Key>,
class A = allocator<T> >
class map {
….
typedef pair<const Key, T> value_type;
…….
};
map 中的元素关键字各不相同。元素按照关键字升序排列,缺省情况下用less 定义“小于”