菜鸟笔记
提升您的技术认知

C++11的using与typedef的区别

两者都是给类型设置一个别名,区别是using可以给模板类设置别名,而typedef则不能模板类设置设置别名。其余情况没有什么区别。

#include <vector>
using namespace std;

template<typename T>
using myvector=vector<T>;

int main(){
  myvector<int> iv;
  return 0;
}

编译通过。

#include <vector>
using namespace std;

template<typename T>
typedef vector<T> myvector;

int main(){
  myvector<int> iv;
  return 0;
}

编译报错error: template declaration of ‘typedef’。

而已经推演过的模板类是可以用typedef设置别名的

#include <vector>
using namespace std;

typedef vector<int> intvector;

int main(){
  intvector iv;
  return 0;
}