typedef
缺点:无法用于模版类
//typedef 实际名 别名
typedef std::vector<std::string>::iterator itType;
using
可用于模版具体化
// using 别名 = 实际名
//例1
using itType = std::vector<std::string>::iterator;
//例2
template<typename T>
using arr12 = std::array<T,12>;
arr12<double> a1;
arr12<std::string> a2;
//例3
template<typename T>
class BinNode
{
using bp = BinNode<T>*;
bp .....
};
#define
宏定义在整个文件内都是可见的,包括导入的库, 该操作实际是对整个文件该别名的替换操作
//例1 普通别名
#define itType std::vector<std::string>::iterator
//例2 模版具体化,文中须有模版,此处是直接替换操作
#define bp BinNode<T>*
template<class T>
class BinNode
{
bp .....
};