C++函数模版
如果对于两种不同类型的数值进行比较,可能会写出以下的代码:
int compare(const string &v1, const string &v2) {
if (v1 < v2) {
return -;
}
if (v2 < v1) {
return ;
}
return ;
}
int compare(const double &v1, const double &v2) {
if (v1 < v2) {
return -;
}
if (v1 > v2) {
return ;
}
return ;
}
这两个函数除对数值比较类弄不一样外,函数体是一样的,而且重写麻烦。
这时候就需要模版了
template <typename T>
int compare(const T &v1, const T &v2) {
if (v1 < v2) {
return -;
}
if (v1 > v2) {
return ;
}
return ;
}
用一个函数体即可完成,这个就是所谓的通用函数模板。
1、定义
模版定义以关键字template开始,后跟模板参数列表(template), 这个列表是一个逗号分隔的一个或多个模版参数的列表,用小于号<和大于号>包起来。
2、实例化
模版定义好后,调用会实例化
cout << compare(, ) << endl;
// compare(const int &v1, const int &v2)
由于编译器遇到一个模版定义时,它并不生成代码。只有实例化出模版时一个特定的版本时,编译器才会生成代码。这一特性影响我们如何组织代码及错误何时被检测到。
C++函数模版的更多相关文章
- c++ 类模版、成员函数模版、函数模版 用法
C++函数模版与类模版. template <class T> void SwapFunction(T &first, T &second){ }//函数模版 templa ...
- C++ Template之函数模版
函数模版的定义: template <typename T> T const& max(const T& a,const T b) { return a > b ? ...
- JDBC中DAO事务函数模版
DAO事物函数模版1: public void OrderFinsByPage(){ Connection conn = null; PreparedStatement pstmt = null; R ...
- C++编译器函数模版机制剖析 - 函数模版的本质
思考:为什么函数模板能够和函数重载放在一块.C++编译器是怎样提供函数模板机制的? demo 1 #include <cstdio> #include <iostream> u ...
- C++函数模版的简单使用
模版算是C++的独有特性吧,也算是C++中比较难的地方,我平时开发的时候用的非常少,或者几乎没有用到,需要模版的地方是能看懂框架中相关的代码: 模版函数相对还是很简单的,引入模版的目的在于代码的重用: ...
- hdu 1286 找新朋友 欧拉函数模版题
找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Des ...
- C++函数模版实现
若一个程序的功能是对某种特定的数据类型进行处理,则将所处理的数据类型说明为参数,那么就可以把这个程序改写成为模版,模版可以让程序对任何其他数据类型进行同样方式的处理. 本节主要是说一下C++的函数模版 ...
- C++中函数模版和普通函数的区别
函数模版和同名普通函数在同一个作用域中,会优先调用那个函数? 函数模型在进行调用的时候会进行严格的类型匹配,而普通函数在调用的时候,会进行函数参数类型转换(前提是自动类型转换). 调用函数模版,本质是 ...
- 函数和函数模版在一个。cpp中的情况!(除了左移和右移,其他的不要用友元函数!!!)
// 友元函数和运算符重载的碰撞.cpp : 定义控制台应用程序的入口点. // #include <iostream> using namespace std; template < ...
随机推荐
- 38. Same Tree && Symmetric Tree
Same Tree Given two binary trees, write a function to check if they are equal or not. Two binary tre ...
- QueryRunner(common-dbutils.jar)
QueryRunner update方法:* int update(String sql, Object... params) --> 可执行增.删.改语句* int update(Connec ...
- oracle中的case when then else end 用法
Case when 的用法,简单Case函数 简单CASE表达式,使用表达式确定返回值. 语法: CASE search_expression WHEN expression1 THEN result ...
- python序列化: json & pickle & shelve 模块
一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进 ...
- C# 數據事務操作
public sealed class SQLFunc { #region Methods #region OpenConnection /// <summary>指定包含連接字串的字串 ...
- PHP性能优化简述
先谢慕课网,这里只做理论简述/** * PHP性能优化 * * 1.问题分析 * PHP语法使用不正确 * PHP不擅长的事 * PHP连接的服务不给力 * PHP自身短板 * 其它原因 * 2.PH ...
- 随笔—邀请赛前训— Codeforces Round #330 (Div. 2) B题
题意: 这道英文题的题意稍稍有点复杂. 找长度为n的数字序列有多少种.这个序列可以分为n/k段,每段k个数字.k个数可以变成一个十进制的数Xi.要求对这每n/k个数,剔除Xi可被ai整除的情况,剔除X ...
- Java设计模式——适配器模式
JAVA 设计模式 适配器模式 用途 适配器模式 (Adapter) 将一个类的接口转换成客户希望的另外一个接口. Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适配器 ...
- iOS崩溃日志记录工具--CrashlyTics
http://try.crashlytics.com Crashlytics优势: 1.Crashlytics基本不会漏掉任何应用崩溃的信息 2.Crashlytics对崩溃日志管理很人性化,会根据崩 ...
- performSelector may cause a leak because its selector is unknown解决
解决方法 SEL selector = NSSelectorFromString(@"applySketchFilter:"); IMP imp = [FWApplyFilter ...