C++ STL学习笔记 : 1. template 模板函数
2020-06-07 05:21
302 查看
本篇文章是学习C++ STL库的第一篇笔记,主要记录了使用template关键字创建模板函数的方法。
下面用一个非常简单的例子解释模板函数的用法 :
#include <iostream> using namespace std; template <class T> void myswap(T& a, T& b) { T temp = a; a = b; b = temp; } int main() { int a = 10; int b = 20; cout << "a: " << a << " b: " << b << endl; myswap(a,b);cout << "a: " << a << " b: " << b << endl; double c = 11.5; double d = 3.14; cout << "c: " << c << " d: " << d << endl; myswap<double>(c,d);cout << "c: " << c << " d: " << d << endl; return 0; }
输出结果如下:
使用模板函数最大的优点,在于我们可以对一类函数进行统一定义,这类函数一般内部的逻辑相同,唯一的区别在于使用的参数,变量类型不同。使用模板函数对这一类函数进行统一定义,在调用和维护时都会更为方便。在上述例子中,我们实现了一个调换两个变量值的函数,这个函数可以调换任意两个同类型变量的值。
在使用模板函数时,首先我们使用关键字template定义一个变量类型的类,例如这里的T。我们可以同时定义几个变量类型的类:
template <class T1, class T2...>
在调用模板函数时有两种方式,第一种和普通函数一样调用,例如上述例子中的:
myswap(a,b);
或者也可以定义好具体的类型:
myswap<double>(c,d);
1.需要注意的是,template定义的类模板,只对下一个函数有效。也就是说每次使用模板函数需要重新使用template关键字,一个模板函数对应一个template关键字。
2.模板函数仍然可以像普通函数一样被重载。
3.当模板函数和普通函数都满足调用的条件,程序会优先调用普通函数。
4.模板函数在调用的时候,其参数的类型必须严格对应,否则无法调用。
本篇文章主要参考了youtube视频,链接如下:
https://www.youtube.com/watch?v=xEz4jdKEfSI&list=PLzKtnppOmiXD-pyI4bjNzn9Km2ugRkdUK&index=1
相关文章推荐
- 学习笔记(05):C++ STLSTL实战开发精讲视频-模板机制剖析(一):函数模板与隐式类型转换,模板函数与函数重载...
- C++ Primer 学习笔记_45_STL实践与分析(19)--泛型算法的结构
- C++ STL 学习笔记 string
- 【学习笔记】C++高级程序设计:STL标准模板库(2)
- C++ STL 学习笔记 list,forward_list
- C++学习笔记——C++ Primer Plus中文第六版 第十六章STL编程练习解答
- C++之Effective STL学习笔记Item21
- C++ STL学习笔记二 vector向量容器
- 【C++ 学习笔记】:STL-multimap
- c++ template笔记(1)模板函数
- C++学习笔记STL之迭代器
- STL学习笔记(四)——温习一下C++的一些重要概念(上)
- STL学习笔记----C++的新语言特性
- C++ STL学习笔记一
- 学习笔记(06):C++ STLSTL实战开发精讲视频-模板机制剖析(二):hpp文件的由来与name mangling的编译原理...
- member template成员模板笔记----C++学习之路
- C++ STL 学习笔记
- C++ STL 学习笔记 3. 文本文件操作
- 算法笔记:C++ STL(Standard Template Library)
- C++ STL 学习笔记 stack