C++_auto关键字
当STL的模板类型实例化的时候,如果实例化的类型是模版类型,那么使用迭代器是会报错的
比如
cpp
1 | template<class T> |
因为在模板参数T实例化之前,模板类型为int的vector明确了自己的类型就是int,故迭代器可以根据类型执行相应的关于空间的操作。而模版类型为T的vector尚不知道T究竟是什么类型,所以迭代器无法通过类型来执行操作
auto关键字是在程序编译时自动推导出变量的类型,可以很自然地和泛型编程结合而不用去提前考虑变量的类型
cpp
1 | template<class T> |
auto会在最后编译的时候,会判断变量的类型。在编译时,一旦调用函数,T类型就已经实例化,并且v是vector,vector.begin()函数返回的就是vector的迭代器,因此编译器会推导出此时V的类型
==因此auto可以将泛型编程(模板)跟STL很好地结合==
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 浴巾的贼船!
评论