C++ swap函数模板及其用法
在许多应用程序中,都有交换相同类型的两个变量内容的需要。例如,在对整数数组进行排序时,将需要一个函数来交换两个变量的值,如下所示:
下面的程序演示了如何使用这个库模板函数来交换两个变量的内容:
void swap(int &a, int &b) { int temp = a; a = b; b = temp; }而在对一个数组字符串对象进行排序的时候,会需要以下函数:
void swap(string &a, string &b) { string temp = a; a = b; b = temp; }因为这两个函数中代码的唯一区别就是被交换的变量的类型,所以这两个函数的逻辑与所有其他类似函数的逻辑都可以使用同一个模板函数来表示:
template<class T> void swap(T &a, T &b) { T temp = a; a = b; b = temp; }这样的模板函数在标准 C++ 编译器附带的库中可用。该函数在
<algorithm>
头文件中声明。下面的程序演示了如何使用这个库模板函数来交换两个变量的内容:
// This program demonstrates the use of the swap function template. #include <iostream> #include <string> #include <algorithm> // Needed for swap using namespace std; int main () { // Get and swap two chars char firstChar, secondChar; cout << "Enter two characters: "; cin >> firstChar >> secondChar; swap(firstChar, secondChar); cout << firstChar << " " << secondChar << endl; // Get and swap two ints int firstInt, secondInt; cout << "Enter two integers: "; cin >> firstInt >> secondInt; swap(firstInt, secondInt); cout << firstInt << " " << secondInt << endl; // Get and swap two strings cout << "Enter two strings: "; string firstString, secondString; cin >> firstString >> secondString; swap(firstString, secondString); cout << firstString << " " << secondString << endl; return 0; }程序输出结果:
Enter two characters: a b
b a
Enter two integers: 12 45
45 12
Enter two strings: http://c.biancheng.net cyuyan
cyuyan http://c.biancheng.net
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频
优秀文章
- C++(STL) all_of、any_of及none_of算法详解
- Java声明和抛出异常:throws声明异常、throw抛出异常、throw和throws的区别
- Visual C++范例开发视频教程
- C++ typeid运算符:获取类型信息
- C# Insert:字符串插入
- Shell组命令(把多条命令看做一个整体)
- 汇编语言WriteStackFrame过程:显示当前过程堆栈帧的内容
- Java Statement.execute()方法:执行SQL语句
- Hibernate setProperty方法:为Configuation对象指定配置属性
- Spring loadAll方法:装载指定类型的所有实体对象