模版

简介:
  • 非类型模版
  • 类型模版
    1. 类模版
    2. 函数模版

 

一。非类型模版 

复制代码
#include <iostream>
using namespace std;

template<int Size>
class Index
{
    public:
        int operator[](char vchar) 
        { return vchar % Size; }
};

int main()
{
    Index<26> index;
    cout << index['a'] << endl;
}
复制代码

 

二。类模版

模版——模版形参为基本类型

复制代码
#include <iostream>
using namespace std;

template<class Type>
class trie
{
    public:
        trie(Type val_1, Type val_2) : num_1(val_1), num_2(val_2) {}
        void print_sum() { cout << num_1 + num_2 << endl; }
    private:
        Type num_1, num_2;
};

int main()
{
    trie<int> tt(2, 5);
    tt.print_sum();
}
复制代码

模版——模版形参为自定义非模版类

复制代码
#include <iostream>
using namespace std;

template<class Type>
class trie
{
    public:
        Type num;
};
class Index
{
    public:
        int operator[](char vchar) 
        { return vchar % 26; }
};

int main()
{
    trie<Index> tt;
    cout << tt.num['a'] << endl;
    cout << tt.num['z'] << endl;
}
复制代码

模版——模版形参为自定义模版类

复制代码
#include <iostream>
using namespace std;

template<class Type, int Size>
class trie
{
    public:
        Type num;
};

template<int Size>
class Index
{
    public:
        int operator[](char vchar) 
        { return vchar % Size; }
};

int main()
{
    trie<Index<26>, 26> t;
}
复制代码

类模版成员函数定义

成员函数为非模版函数

复制代码
#include <iostream>
#include <cstring>
using namespace std;

template <class Type, int Size>
class test
{
    public:
        test(Type num) : val(num) {}
        void print_val();
    private:
        Type val;
};

template<class Type, int Size>
void test<Type, Size>::print_val()
{
    cout << val << " " << Size << endl;
}

int main()
{
    test<int, 10> a(4);
    a.print_val();
}
复制代码

成员函数为模版函数

复制代码
#include <iostream>
#include <cstring>
using namespace std;

template <class Type, int Size>
class test
{
    public:
        test(Type num) : val(num) {}
        template<class Type_fuc>
        void print_val(Type_fuc m);
    private:
        Type val;
};

template<class Type, int Size>
template<class Type_fuc>  //模版类的模版函数需要另起一行
void test<Type, Size>::print_val(Type_fuc m)
{
    cout << val << " " << Size << endl;
    cout << "m:" << m << endl;
}

int main()
{
    test<int, 10> a(4);
    a.print_val("hello");
}
复制代码

 

三。函数模版

复制代码
#include <iostream>
using namespace std;

template<class Type>
Type sum(Type num_1, Type num_2)
{
    return num_1 + num_2;
}
int main()
{
    cout << sum(2, 3) << endl;
    cout << sum(2.2, 3.0) << endl;
}
复制代码

结果

5

5.2

 




本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/3601495.html,如需转载请自行联系原作者


相关文章
|
Kubernetes 调度 Docker
Kubernetes加入新节点,经验总结
Kubernetes节点加入,经验总结 kubeadm安装Kubernetes,实践记录。 参考:https://my.oschina.net/u/2306127/blog/1628082 Kubernetes主控节点建立后(方法参见上面的链接),就可以随时添加更多的工作节点进去构建更大的集群(minikube设计为单机开发使用,不能添加工作节点),容器实例可以在所有符合条件的node上调度运行,这是Kubernetes最为强大的功能。
3927 0
|
机器学习/深度学习
【技术分享】机器学习分类性能指标:准确率Accuracy/精确率Precision/召回率Recall/F1值
【技术分享】机器学习分类性能指标:准确率Accuracy/精确率Precision/召回率Recall/F1值
559 0
【技术分享】机器学习分类性能指标:准确率Accuracy/精确率Precision/召回率Recall/F1值
|
SQL 存储 弹性计算
互联网、游戏等行业实时数仓构建最佳实践
互联网、游戏等行业客户基于Flink构建实时数仓,通过Logtail采集日志,使用Flink实现对日志的拆分、处理。
815 0
互联网、游戏等行业实时数仓构建最佳实践
|
Java 数据库连接 数据库
你还在用分页?试试 MyBatis 流式查询,真心强大!
你还在用分页?试试 MyBatis 流式查询,真心强大!
验签失败自查方案-支付宝接口常见错误系列
说明:   验签只需要使用到支付宝公钥 错误原因:   1.支付宝公钥使用错误导致   2.验签方法使用错误   3.参数错误导致,例如乱码,带自定义参数,编码格式。 自查流程(按照推荐流程检查)   第一步(重点检查):支付宝公钥使用是否错误参考这个帖子自查:[url]https://openclub.
3447 12
|
Unix 应用服务中间件 PHP
Nginx-一个IP配置多个站点
对于Nginx,一个IP上配置多个站点还是很常见的。尤其是在开发环境上,更是如此。 下面在我的阿里云上简单的实现这样一个需求: 在一个IP上通过对端口区分来配置多个站点。
4039 0
|
云栖大会 云计算
【云栖大会】王坚首部著作《在线》发布 马云作序“相见恨晚”
10月13日,阿里巴巴技术委员会主席王坚在2016杭州·云栖大会上发布新书《在线》。江苏省委书记李强、阿里巴巴集团董事局主席马云、鸿海/富士康科技集团总裁郭台铭为新书作序,对王坚其人以及这本书都给予很高的评价。
6891 0
|
弹性计算 虚拟化 KVM
Intel Xeon Gold 6149 3.1GHz CPU性能怎么样?阿里云ECS服务器
Intel Xeon Gold 6149 3.1GHz CPU性能怎么样?阿里云ECS服务器 阿里云 优 惠 地 址https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=q3dtcrrv 阿里云ECS服务器是一种弹性可伸缩的云服务器,通过虚拟化平台将服务器集群虚拟为多个性能可配的虚拟机(KVM),对整个集群系统中所有KVM进行监控和管理,并根据实际资源使用情况灵活 分配和调度资源池。
7356 0
|
安全 网络安全 UED
导致企业破产的DDOS,成本可能只需30元人民币
作为网络安全防御的其中一员,每天会有很多被攻击用户问我,他们发起DDoS攻击的成本是多少呢?我们应该了解有很多用户初步使用的服务器基本都是服务商送的免费防御包,一般是5G-10G,因此导致企业遇见简单又直接的DDOS流量攻击或者CC并发攻击时,服务器奔溃瘫痪、网站打不开等问题。
2120 0
|
自然语言处理 机器人
阿里云提交工单的方法教程在线呼叫人工客服就这么简单!
遇到问题怎么办?可以提供工单给阿里云客服,如何提交工单?很多用户在提交工单的过程中感觉很麻烦,云吞铺子分享大家一个非常简单的提供工单的方法: 阿里云智能客服了解一下 打开智能客服:https://ia.aliyun.com/,如下图:打开智能客服后,输入“人工”或者“人工客服”,然后点“发送”,智能客服会自动回复“找人工客服”的链接,直接点击即可提交工单了,方不方便?简不简单?来,给云吞铺子点个赞吧! 智能客服是属于机器人客服,非人工的;提交工单对接的是人工客服,对面是真真实实的人,人工客服拥有更多权限,遇到问题找人工客服才是重点。
7401 0