菜单导航

C++模板与泛型 --- using定义模板别名,显式指定模板参数(原创)

作者: 唐山便民助手 发布时间: 2020年03月26日 06:36:50

上一节我们学习了 成员函数模板,显式实例化、声明,通过上一节的学习,大家对 成员函数模板,显式实例化、声明有一个比较清晰的认识,那么本节,我们继续学习模板与泛型的知识,即using定义模板别名,显式指定模板参数,希望通过本节的学习,大家能够对模板与泛型的概念有一个更加清晰的认识!

一、using定义模板别名#include <iostream>#include <string>#include <map>using namespace std;// 希望定义一个类型,前边这部分固定不变,// 是 std::map<std::string, 自己指定类型>// C++98自定义类型template <typename wt>// 定义一个结构体/类,只是结构的成员缺省都是publicstruct map_s { // 定义了一个类型 typedef std::map<std::string, wt> type; };// C++11版定义类型template <typename T>//str_map1是类型别名;// using 用来给类型模板起名字用的using str_map_t = std::map<std::string, T>; int main(){ // typedef:一般用来定义别名 // 相当于给unsigned int类型起了一个别名uint_t typedef unsigned int uint_t; uint_t abc; //std::map<std::string, int> typedef std::map<std::string, int> map_s_i; map_s_i mymap; mymap.insert({ "first",1 }); mymap.insert({ "second",2 }); typedef std::map<std::string, std::string> map_s_s; map_s_s mymap2; mymap2.insert({ "first","firstone" }); // 等价于 std::map<string,int> map1; map_s<int>::type map1; map1.insert({ "first",1 }); str_map_t<int> map2; map2.insert({ "second",2 }); // using在用于定义类型(定义类型模板)的时候, // 包含了typedef的所有功能。 typedef unsigned int uint_tx; using uint_tu = unsigned int; typedef std::map<std::string, int> map_s_i; using map_s_u = std::map<std::string, int>; // 用typedef来定义函数指针 typedef int(*FuncType)(int, int); // using定一个函数指针 using FuncType_u = int(*)(int, int); system("pause"); return 0;}#include <iostream>#include <string>#include <map>using namespace std;// 模板函数指针template <typename T>using myfunc = int(*)(T, T);// 普通的函数指针// using myfunc = int(*)(int, int);// 实际函数int realFunc(int i, int j){ return 1;}int main(){ // myfunc<int>是一个函数指针类型 // pointFunc是一个函数指针变量 myfunc<int> pointFunc; // 函数地址赋值给指针变量 pointFunc = realFunc; cout << pointFunc(1, 2) << endl; // 总结: // 1、using中使用这种模板,既不是类模板, // 也不是函数模板,我们可以看成一种新的模板类型: // 类型模板(模板别名) system("pause"); return 0;}二、显式指定模板参数#include <iostream>using namespace std;template <typename T1,typename T2,typename T3>//T1 sumx(T2 i, T3 j)T3 sumx(T1 i, T2 j){ T1 result = i + j; return result;}int main(){ // 手工指定的类型优先 // 显式指定模板类型 auto result = sumx<double,double,double>(2000000000, 2000000000); cout << result << endl; system("pause"); return 0;}

我是奕双,现在已经毕业将近两年了,从大学开始学编程,期间学习了C需要编程,C++需要编程,Win32编程,MFC编程,毕业之后进入一家图像处理相关领域的公司,掌握了用OpenCV对图像进行处理,如果大家对相关领域感兴趣的话,可以关注我,我这边会为大家进行解答哦!如果大家需要相关学习资料的话,可以私聊我哦!

上一篇:夜游迪拜河(原创)

下一篇:肉粽(原创)

你喜欢吗更多>
文章首发于公众号“盒子匠”,获取词:简历模板 ... 毕业季已悄然的来临,各大学校的毕业生都早已变得忙碌起来,他们四处奔波,忙着到各大公司面试,只为能求得一份满意的工作
2020年01月17日 06:32:24  唐山便民助手

随机推荐更多>
南疆,在不少人眼里可能有些神秘。得益于高效快捷的公路网,五一假期,我们以阿图什为起点,大致沿着吐和高速一路向东,全程3000公里,串联了南疆很多历史文化名城。 第一站是
简短提示:本文标题石家庄市秋冬季安排造林任务20万亩。 摘要:近日,《石家庄市2018年秋冬季农村造林绿化工作实施方案》正式出台。今年,全市秋冬 上一篇:石家庄13名环卫工人
简短提示:本文标题一锤定音!中央明确2018年房地产要这么干。。 摘要:引语 12月20日,万众瞩目的中央经济工作会议闭幕,这是十九大后首个中央经济工作会议 上一篇:重磅!万亿
❖  投稿事项  ❖ 1. 务必保证投稿作品为本人原创,从未发表于任何平台; 2. 投稿请以附件形式发送到指定邮箱,注意排版整洁、合理分段; 3. 邮件主题:投稿+文章标题,并在邮
李云迪爱徒,来自马来西亚的钢琴女神李元玲,不仅琴技精湛,更会跳芭蕾舞。热衷健身的她,体脂只有12%,堪称天使面孔、魔鬼身材的完美代表! 现年29岁的李元玲身高170cm,只有
小时候,我们上自然课时,老师就讲到保护环境是我们大家每个人的责任。童年不懂事,也没有听进去。老师讲他,我们就听听就行了。 后来我们在电视新闻上,经常会讲到环境的重
简短提示:本文标题宝安开学大礼包:新增1.2万公办学位,启用共享学区。 摘要:新学期今天开学了,一大波教育福利也正在路上。 一直以来,深圳市宝安区委区政府高度 上一篇:解
简短提示:本文标题急售房源:宏利花园3房12133元/㎡ 武夷云庭3房12000元/㎡。 摘要:宏利花园3房 单价: 12133元/㎡ 总价: 165万 户型面积: 136㎡(3室 2厅 2卫) 朝向 上一篇:正荣木兰
一对艺术家兄弟手工创作出一系列的濒危动物印花版画:打开灯,它们是美妙的艺术作品,关上灯,它们是画中濒危动物直指你内心的物种生存哀求。 这个项目就是「肌肤之下」(
世界上最幸福的爱,就是爱你的人,用你所希望的方式爱你,爱你所希望他爱你的优点,这个世界上有多少人互相爱是爱了,却爱得不是地方,爱得全不得当。我做好了要与你过一辈
热门标签更多>