首页 > 编程语言 >C++快速入门 第四十四讲:函数模板swap使用

C++快速入门 第四十四讲:函数模板swap使用

时间:2023-08-18 15:45:07浏览次数:41  
标签:函数 int 第四十四 数据类型 C++ 编译器 swap 模板

泛型编程技术支持程序员创建函数和类的蓝图(即模板,template),而不是具体的函数和类。

标准模板库STL(Standard Template Library),STL库是泛型编程技术的经典之作,它包含了许多非常有用的数据类型和算法。

当拥有一个模板时,编译器将根据模板自动创建一个函数,该函数会使用正确的数据类型完成相应的任务。

实例:函数模板

 1 #include <iostream>
 2 #include <string>
 3 //using namespace std; 
 4 template <class T>//运用模板,告诉编译器,
 5 //字母T在接下来的函数里代表一种不确定的数据类型 
 6 //以上class并不意味着这是类,而是约定俗成的写法 
 7 void swap(T &a,T &b)
 8 {
 9     T tmp = a;
10     a = b;
11     b = tmp;
12 }
13 int main()
14 {
15     int i1 = 100;
16     int i2 = 200;
17     
18     std::cout << "交换前,i1 = " << i1 << ",i2 = " << i2 << "\n";
19     swap(i1,i2);
20     std::cout << "交换后,i1 = " << i1 << ",i2 = " << i2 << "\n";
21     
22     std::string s1 = "yiwofeiye";
23     std::string s2 = "helloworld";
24     
25     std::cout << "交换前,s1 = " << s1 << ",s2 = " << s2 << "\n";
26     swap(s1,s2);
27     std::cout << "交换后,s1 = " << s1 << ",s2 = " << s2 << "\n";
28     return 0; 
29 }

标签:函数,int,第四十四,数据类型,C++,编译器,swap,模板
From: https://www.cnblogs.com/ybqjymy/p/17640677.html

相关文章

  • C++快速入门 第四十六讲:内联模板
    内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。编译时类似宏替换,使用函数体替换调用处的函数名。(在程序中,调用其函数时,该函数在编译时被替换,而不是像一般函数那样是在运行时被调用)实例:栈1#include<iostream>2#include<string>34template<class......
  • C++快速入门 第四十七讲:容器和算法
    C++标准库提供的向量(vector)类型从根本上解决了数组先天不足的问题(内存固定,如果不用那么多内存编译器也会为其分配)我们用不着对一个向量能容纳多少元素做出限定,因为向量可以动态地随着你往它里面添加元素而无限增大。还可以用它的size()方法查知某给定向量的当前长度(即包含的元素......
  • C++快速入门 第三十六讲:副本构造器
    我们可以把一个对象赋值给一个类型与之相同的变量,编译器将生成必要的代码把“源”对象各属性的值分别赋值给“目标”对象的对应成员。这种赋值行为称之为逐位复制。(但如果某些成员变量是指针的话,对象成员逐位复制的结果是你将拥有两个一模一样的实例,而这两个副本里的同名指针会指......
  • C++快速入门 第三十八讲:避免内存泄漏
    如果程序会运行很长时间(例如在服务器上,注意不是所有的操作系统都像windows一样每天都要重启),并且在不停地申请新的内存块,忘记释放那些已经不再有用的老内存迟早会把内存消耗殆尽,直接导致后边的new操作无法执行甚至崩溃。动态内存是没有作用域的,所以必须由程序员来跟踪它们......
  • C++快速入门 第三十七讲:高级强制类型转换
    实例1:静态强制转换1#include<iostream>2#include<string>34usingnamespacestd;5classCompany6{7public:8Company(stringtheName,stringproduct);9virtualvoidprintInfo();1011protected:12stringname;13......
  • C++快速入门 第二十七讲:运算符左移<<重载
    一般来说,在调用operator<<()重载函数时,传递给它的是哪一个流,它返回的就应该是那个流的一个引用。实例:左移操作符重载1#include<iostream>2#include<string>3#include<math.h>45usingnamespacestd;6classRational//定义基类7{8public:......
  • C++快速入门 第二十八讲:多继承(multiple inheritance)
    1多继承语法:23//助教类既继承于老师类,又继承于学生类4classAssistant:publicTeacher,publicStudent5{6};78当遇到的问题无法只用一个“是一个”关系来描述的时候,就是多继承出场的时候。例即是学生,又是人,还是助教。910#include<iostre......
  • C++快速入门 第三十讲:错误处理和调试
    程序出错可以分为两大类:编译时出错(complie-timeerror)和运行时错误(run-timeerror)suggest1:培养并保持一种编程风格suggest2:认真对待编译器给出的错误/警告信息suggest3:写代码三思而后行(先画流程图)suggest4:注意检查最基本的语法suggest5:把可能有问题的代码行注释suggest......
  • C++快速入门 第二十九讲:虚继承
    通过虚继承某个基类,就是在告诉编译器:从当前这个类再派生出来的子类只能拥有那个基类的一个实例。虚继承的语法:1classTeacher:virtualpublicPerson23{45}这样做的话便可以让Student和Teacher类都虚继承自Person类,编译器将确保从Student和Teacher类再派生出来的子......
  • C++快速入门 第三十一讲:错误处理与调试2
    让函数返回错误代码实例:范围限制1#include<iostream>2#include<climits>34usingnamespacestd;5classFactorial6{7public:8Factorial(unsignedshortnum);9unsignedlonggetFactorial();10boolinRange();1112private......