一、别名模板
别名模板的英文名叫作 A l i a s T e m p l a t e s Alias \ Templates Alias Templates,是 C + + 11 C++11 C++11引入的新标准,引入的目的是不但能简化书写,而且可以达到通过其他手段很难实现的效果(如类型萃取等)。
这里简单介绍简化书写这个功能。
一般类型模板通过
u
s
i
n
g
using
using关键字来实现别名模板
下面代码演示了如何使用:
//别名模板的使用
template<typename T>
using str_map_t = std::map<std::string, int>;
void Test1() {
str_map_t<int> map; //使用别名
map.insert({ "first",1 });
map.insert({ "second",2 });
}
这里使用了别名来简化 s t d : : m a p < s t d : : s t i r n g , i n t > std::map<std::stirng,int> std::map<std::stirng,int>的类型。
二、成员别名模板
成员别名模板与别名模板的区别就是一个位于全局位置,而另一个位于类内,简化类内函数、成员变量的书写。
具体如下:
//成员别名模板
class A {
//位于顶部
template<typename T>
using str_map_t = std::map<std::string, int>;
public:
str_map_t<int>map;
};
void Test2() {
A a;
a.map.insert({ "third",3 });
a.map.insert({ "fourth",4 });
}
这里注意,一般我们写成员别名模板都放在顶部位置,不需要 p u b l i c public public来修饰。