[C++11]使用using和typedef给模板定义别名

using语法和typedef一样,并不会创建出新的类型,它们只是给某些类型定义了新的别名。using相较于typedef的优势在于定义函数指针别名时看起来更加直观,并且可以给模板定义别名。

使用typedef给模板定义别名:

无法直接使用typedef给模板定义别名

代码如下:

template<typename T>
typedef map<int, T>mapType;//error

注意:使用typedef给模板定义别名,需要用到struct

代码如下:

#include <iostream>
#include <string>
#include <map>
using namespace std;template<typename T>
struct myMap
{typedef map<int, T>mapType;
};template<typename T>
class Container
{
public:void print(T & t){auto it = t.begin();for (; it != t.end(); it++){cout << it->first << " " << it->second << endl;}}
};int main()
{myMap<int>::mapType mm1;mm1.insert(make_pair(1, 1));mm1.insert(make_pair(2, 2));mm1.insert(make_pair(3, 3));Container<myMap<int>::mapType> q;q.print(mm1);myMap<double>::mapType mm2;mm2.insert(make_pair(1, 1.1));mm2.insert(make_pair(2, 2.2));mm2.insert(make_pair(3, 3.3));Container<myMap<double>::mapType> q1;q1.print(mm2);myMap<string>::mapType mm3;mm3.insert(make_pair(3, "Tom"));mm3.insert(make_pair(2, "Jack"));mm3.insert(make_pair(1, "Hello"));Container<myMap<string>::mapType> q2;q2.print(mm3);return 0;
}

测试结果:

在这里插入图片描述

使用using给模板定义别名:

代码如下:

#include <string>
#include <iostream>
#include <map>
using namespace std;template<typename T>
class Container
{
public:void print(T & t){auto it = t.begin();for (; it != t.end(); it++){cout << it->first << " " << it->second << endl;}}
};template<typename T>
using myMap = map<int, T>;int main()
{myMap<string> mm3;mm3.insert(make_pair(1, "Tom"));mm3.insert(make_pair(2, "jack"));mm3.insert(make_pair(3, "hello"));Container<myMap<string>> t;t.print(mm3);return 0;
}

测试结果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

石家庄学院c语言试题,谁会高级语言程序设计?要求用C语言,帮帮我把,愁死我啦...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼好的&#xff0c;题目如下&#xff0c;帮我做做吧1. 图形时钟功能要求&#xff1a;在屏幕上显示一个图形时钟(用程序绘制一个与时钟样式相似即可)&#xff0c;时间与系统时间一致&#xff0c;且要随着时间的走动准确的走动。2. 万年…

Shaolin HDU - 4585(map模板题)

题意&#xff1a; 少林寺有n1个和尚&#xff0c;他们都有一个独有的编号和战斗力值&#xff0c;当一个年轻人通过所有考试并被宣布为少林的新僧人时&#xff0c;将会有一场战斗&#xff0c;作为欢迎的一部分。新和尚必须与一位战斗等级最接近他的战斗等级的老和尚战斗。如果有…

Azure Show|第一期 开播啦!嘉宾梁迪李卓恒李佳芮

欢迎来到Azure Show!Azure ShowAzure Show 是由微软最有价值专家、微软技术社区区域总监卢建晖和微软开发者关系PM朱兴亮共同发起的一个关于微软Azure、开源技术、还有技术社区相关的线上节目。每期节目由MVP面对面、开源故事、从零开始以及Azure101组成&#xff0c;邀请微软技…

c语言coin函数库,Coin Test | C/C++程序员之家

Coin Test时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;1描述As is known to all,if you throw a coin up and let it droped on the desk there are usually three results. Yes,just believe what I say ~it can be the right side or the …

[PAT乙级]1033 旧键盘打字(getline()读入)

旧键盘上坏了几个键&#xff0c;于是在敲一段文字的时候&#xff0c;对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键&#xff0c;打出的结果文字会是怎样&#xff1f; 输入格式&#xff1a; 输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其…

基于 abp vNext 和 .NET Core 开发博客项目 - 完善与美化,Swagger登场

上一篇文章(https://www.cnblogs.com/meowv/p/12896898.html)已经成功将博客项目跑起来了&#xff0c;那么本篇主要是将之前遗留的问题解决&#xff0c;现在的代码看起来可能还是比较混乱&#xff0c;有大量与之无关的代码存在里面&#xff0c;对于强迫症患者来说真的是零容忍。…

string函数知识点总结

标准c中string类函数介绍 之所以抛弃char*的字符串而选用C标准程序库中的string类&#xff0c;是因为他和前者比较起来&#xff0c;不必 担心内存是否足够、字符串长度等等&#xff0c;而且作为一个类出现&#xff0c;他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需…

[C++11]基于范围的for循环

C11提供了一种新型的for循环形式 - 基于范围的for循环 语法: for (declaration : expression) {//循环体 }在上面的语法格式中&#xff0c;declaration表示遍历声明&#xff0c;在遍历过程中&#xff0c;当前被遍历到的元素会被存储到声明的变量中&#xff0c;expression是要…

c语言画笔的使用方法,新手必看:Photoshop笔刷画笔工具基本使用教程

本文为Photoshop初学者提供基本的Photoshop笔刷画笔工具的基本使用方法,这可以说是Photoshop最重要的功能。希望初学PS朋友认真学习&#xff0c;有所帮助&#xff01;工具/原料Photoshop CC 2014或者其他较新版本的psPhotoshop笔刷画笔工具介绍&#xff1a;1、画笔工具在哪里呢…

基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来

上一篇文章(https://www.cnblogs.com/meowv/p/12896177.html)已经成功创建了博客项目&#xff0c;但是abp默认给我们引用了许多项目中用不到的组件。本篇文章将给项目进行瘦身&#xff0c;删掉对我们来说暂时用不到的组件。讲解各个模块之间的关系&#xff0c;写一个Hello Worl…

计算机网络原理第一章习题3-24 3-25

计算机网络原理第一章习题 3-24假定站点A和B在同一个10Mb/s以太网网段上。这两个站点之间的传播时延为225比特时间。现假定A开始发送一帧&#xff0c;并且在A发送结束之前B也发送一帧。如果A发送的是以太网所容许的最短的帧&#xff0c;那么A在检测到和B发生碰撞之前能否把自己…

[C++11]可调用对象

在C中存在"可调用对象"这么一个概念&#xff0c;准确来说&#xff0c;可调用对象有如下几种定义: 1.是一个函数指针 代码如下: int print(int a, double b) {cout << a << b << endl;return 0; }int(*func)(int, double) &print;2.是一个具…

c语言加花指令,花指令的应用

原标题&#xff1a;花指令的应用对免杀的影响是非常大的&#xff0c;有效地利用花指令可以使免杀工作事半功倍&#xff0c;甚至单凭花指令就可以达到免杀的效果。一、花指令在免杀领域的应用1、花指令的应用技巧在使用之前&#xff0c;首先我们应该明白什么时候比较适合使用&am…

走向统一的 .NET 旅程

这是微软第一次完全线上举办的Build大会&#xff0c;也是第一次完全属于开发者的大会。几乎所有的新产品都是属于开发者&#xff0c;开发者成为了唯一的主角。现在的微软比以往任何时候都贴近开发者&#xff0c;重视开发者的作用&#xff0c;为他们打造平台和工具。因为没有开发…

[PAT乙级]1039 到底买不买

小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串&#xff0c;但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下&#xff0c;某串珠子里是否包含了全部自己想要的珠子&#xff1f;如果是&#xff0c;那么告诉她有多少多余的珠子&#xff1b;如果…

Collecting Bugs POJ - 2096(基础概率dp+期望模板)

题意&#xff1a; 有s个系统&#xff0c;n种bug&#xff0c;小明每天找出一个bug&#xff0c;可能是任意一个系统的&#xff0c;可能是任意一种bug&#xff0c;即是某一系统的bug概率是1/s&#xff0c;是某一种bug概率是1/n。 求他找到s个系统的bug&#xff0c;n种bug&#xff…

python3调用c语言数组,使用Python中的ctypes访问数组

我正在用C编写一个ode解算器&#xff0c;导出到一个WindowsDLL和一个DLL的Python包装器。我非常习惯Python&#xff0c;但我对C和ctypes也是一个完全的初学者。在受公认答案here启发的修改后的解决方案如下所示&#xff1a;C代码/* my_clib.c */#include #include #include str…

Service Mesh 高可用在企业级生产中的实践

Service Mesh Virtual Meetup 是 ServiceMesher 社区和 CNCF 联合主办的线上系列直播。本期为 Service Mesh Virtual Meetup#1 &#xff0c;邀请了四位来自不同公司的嘉宾&#xff0c;从不同角度展开了 Service Mesh 的应用实践分享&#xff0c;分享涵盖来自陌陌和百度的 Servi…

Fibonacci again and again HDU - 1848(尼姆博弈+SG函数的运用+SG函数详解)

题意&#xff1a; 给出三堆石子(m,n,p个)&#xff0c;两人每次只能取斐波那契数f[i]个&#xff0c;最先取光所有石子者取胜 题目&#xff1a; 任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生&#xff0c;它是这样定义的&#xff1a; F(1)1; F(2)2; F(n)F(n…

[PAT乙级]1041 考试座位号

每个 PAT 考生在参加考试时都会被分配两个座位号&#xff0c;一个是试机座位&#xff0c;一个是考试座位。正常情况下&#xff0c;考生在入场时先得到试机座位号码&#xff0c;入座进入试机状态后&#xff0c;系统会显示该考生的考试座位号码&#xff0c;考试时考生需要换到考试…