最近看到了这么一段代码,趁机补习了一遍C++STL泛型编程的知识,于此记录一下。首先代码如下
//(1)定义了一个Item类型的结构体
typedef struct ITEM {
unsigned int i;
unsigned int j;
} Item;
//(2)声明了一个C++泛型结构体,类型名为A_less
template <class T> struct A_less : public binary_function <T, T, bool > {
bool operator()(T lhs, T rhs) const
{
if (lhs.i < rhs.i)
return true;
if (lhs.i == rhs.i)
if (lhs.j < rhs.j)
return true;
return false;
}
};
//(3)
typedef map <Item, int, A_less <Item> > IntMap;
typedef map <Item, int, A_less <Item> > :: value_type MVT;
typedef map <Item, int, A_less <Item> > :: iterator MapItor;
需要明白几个概念:
- C++结构体
C的结构体只能封装一些单一的数据,不能含方法。但是C++的结构体和类是高度一致的,不仅有成员函数,还有构造函数,甚至可以指定成员的访问权限(如public和private)。C++结构体和类的唯一的差别在于,在不显示指定成员函数和变量的权限时,C++结构体默认是public,而类默认是private。其实C++之结构体其本质已经是和类一样了,之所以保留struct