【C++ 学习 ㉝】- C++11 使用 using 定义别名

众所周知,在 C++ 中可以使用 typedef 定义类型别名,例如:

typedef unsigned int u_int;
typedef void(*pf)(int, int);

但它也有一些限制,比如,无法定义类模板别名。当我们需要实现一个 key_type 固定为 string,mapped_type 可能为 string、int 等的 map_str 类模板时,直接使用 typedef 是行不通的,往往不得不按以下方式去写:

#include <map>
#include <string>
#include <iostream>
using namespace std;
​
template<class T>
struct map_str
{typedef map<string, T> type;
};
​
int main()
{map_str<string>::type dictMap;dictMap.insert({ "hello", "你好" });dictMap.insert({ "world", "世界" });for (const auto& kv : dictMap){cout << kv.first << " : " << kv.second << endl;}
​string fruits[] = { "苹果", "西瓜", "苹果", "西瓜", "苹果", "苹果", "西瓜","苹果", "香蕉", "苹果", "香蕉" };map_str<int>::type countMap;for (const auto& e : fruits){++countMap[e];}for (const auto& kv : countMap){cout << kv.first << " : " << kv.second << endl;}return 0;
}

在 C++11 中,不仅可以使用 using 定义类型别名,还可以定义类模板别名

using u_int = unsigned int;
using pf = void(*)(int, int);
// 与 typedef 相比,using 后面总是立即出现类型别名,
// 之后使用类似赋值语法,将现有的类型名赋给新的类型别名
​
template<class T>
using map_str = map<string, T>;
​
int main()
{map_str<string> dictMap;map_str<int> countMap;return 0;
}

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

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

相关文章

50个网络运维工作者必须知道的小知识!建议收藏!

运维人员对公司互联网业务所依赖的基础设施、基础服务、线上业务进行稳定性加强&#xff0c;进行日常巡检发现服务可能存在的隐患&#xff0c;对整体架构进行优化以屏蔽常见的运行故障&#xff0c;多数据中接入提高业务的容灾能力。 通过监控、日志分析等技术手段&#xff0c;…

服务器经常被攻击的原因

很多中小型企业都是选择虚拟主机服务器&#xff0c;是把一个服务器分成很多个给很多企业一起共用&#xff0c;可能同一个 IP服务器上就有很多个不同企业的网站&#xff0c;这个时候如果跟你同一个IP服务器的网站遭到DDoS攻击&#xff0c;就很有可能会影响到你的网站也无法正常访…

golang的panic与recover基本使用

package mainimport ("errors""fmt" )func main() {// panic会使得程序会终止//panicDemo1()//panicDemo2()//fmt.Println(panicDemo3())panicDemo5()fmt.Println("程序正常执行...") }panicDemo1函数测试 func panicDemo1() {panic("抛出…

【数据集映射】(含完整可行Python代码)Yolo格式数据(txt)转RCNN格式数据(coco)

1&#xff1a;需求背景 目标检测研究中&#xff0c;通常不同的模型需要不同的数据格式&#xff0c;如yolo需要txt、rcnn需要coco等&#xff0c;因此就需要对标注的数据格式进行转换。 通常的数据格式有txt、coco(json)、Pascal VOC、xml等。 本文的需求是txt转coco&#xff…

Java中各个版本JDK分别有哪些常见的垃圾回收算法?它们的适用场景和开启方法是什么?

Java中各个版本JDK分别有哪些常见的垃圾回收算法&#xff1f;它们的使用场景和开启方法是什么&#xff1f; 1.1 JDK 1.8 中的垃圾回收算法1.2 JDK 11 中的垃圾回收算法1.3 JDK17中的垃圾回收算法 1.1 JDK 1.8 中的垃圾回收算法 Java 8引入了一些不同类型的垃圾回收算法&#x…

nginx配置支持PHP

前言 Nginx是通过php-fpm来通信的&#xff0c;所以需要修改的监听9000端口。 当 Nginx 配置支持 PHP 时&#xff0c;它可以将 PHP 请求转发给 PHP-FPM&#xff0c;由 PHP-FPM 处理请求并返回结果。 要配置 Nginx 支持 PHP&#xff0c;你需要在 Nginx 配置文件中添加一个 locat…

如何修改CentOS登录时默认目录

查了一下&#xff0c;有说改/etc/passwd文件的&#xff0c;有说改.bashrc文件的&#xff0c;也有说改.bash_profile&#xff0c;修改的方法都不一样。 我要改的是root登录时的目录&#xff0c;最后修改了/root/.bash_profile文件&#xff0c;只要加一行cd 路径就可以。 这个文…

关于中间件技术

中间件是一种独立的系统软件或服务程序&#xff0c;可以帮助分布式应用软件在不同的技术之间共享资源。中间件可以&#xff1a; 1、负责客户机与服务器之间的连接和通信&#xff0c;以及客户机与应用层之间的高效率通信机制。 2、提供应用的负载均衡和高可用性、安全机制与管…

单片机如何写好一个模块的驱动文件

搞单片机&#xff0c;MCU:STM32/GD32/HC32&#xff0c;通讯模组&#xff1a;4G/WIFI/BT/433&#xff0c;总线&#xff1a;USB/CAN/K/232/485&#xff0c;各种常见的传感器&#xff0c;都接触过。 一开始学习单片机的时候没有形成很好的编写习惯&#xff0c;如LED点亮/熄灭/闪烁…

awk精确筛选

awk精确筛选: $(><):用于对比数值 $n~"字符串"代表第n个字段包括某个字符 $n!~"字符串"代表第n个字段不包括某个字符 $n"字符串"代表第n个字段为某个字符 $n!"字符串"代表第n个字段不为某个字符 $NF:最后一个字段 awk -F…

044_第三代软件开发-保存PDF

第三代软件开发-保存PDF 文章目录 第三代软件开发-保存PDF项目介绍保存PDF头文件源文件使用 关键字&#xff1a; Qt、 Qml、 pdf、 painter、 打印 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language&#xff…

【Windows-软件-FFmpeg】(01)通过CMD运行FFmpeg进行操作,快速上手

前言 通过"cmd"运行"ffmpeg"进行操作&#xff0c;快速上手&#xff1b; 实操 【实操一】 说明 使用"ffmpeg"来合并音频文件和视频文件 &#xff1b; 环境 Windows 11 专业版&#xff08;22621.2428&#xff09;&#xff1b; 代码 &#xf…

Java 性能优化之直接使用成员变量 VS 拷贝副本

背景 刷到一个大佬的 CSDN 博客&#xff0c;仔细看了一下性能优化专栏。联想到我们的日常开发工作&#xff0c;由于业务比较简单&#xff0c;很容就忽略性能问题。但是&#xff0c;性能优化的一下常见思路&#xff0c;也早有耳闻。看了一个 Java 性能优化的方法 「减少操作指令…

Linux进程的优先级

Linux进程的优先级 &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容讲解Linux中进程的优先级&#xff0…

安防监控系统EasyCVR视频汇聚平台,如何实现视频汇聚?

关注我们的朋友都知道&#xff0c;EasyCVR平台最初就是以汇聚为核心而进行打造的&#xff0c;那到底什么是汇聚平台呢&#xff1f;又如何进行视频资源汇聚&#xff1f;简单来说&#xff0c;视频汇聚平台是指能够从不同的视频源&#xff08;例如直播、点播等&#xff09;收集、整…

node.js快死了!Bun 1.0 正在改变 JavaScript 游戏规则

在进一步讨论之前&#xff0c;我们需要解释什么是 javascript 运行时以及为什么我们应该关心它的速度。 想象一下&#xff0c;你用JavaScript写了一个故事&#xff0c;你需要有人大声朗读。JavaScript 运行时就像那个友好的叙述者&#xff0c;让你的故事栩栩如生&#xff01;这…

Nginx篇---第二篇

系列文章目录 文章目录 系列文章目录一、请列举Nginx和Apache 之间的不同点二、在Nginx中,如何使用未定义的服务器名称来阻止处理请求?三、请解释Nginx服务器上的Master和Worker进程分别是什么?一、请列举Nginx和Apache 之间的不同点 二、在Nginx中,如何使用未定义的服务器…

[移动通讯]【Carrier Aggregation-13】【Carrier Aggregation】

前言&#xff1a; 前面分享过不同note CA 技术文档 这里主要参考 4G|ShareTechnote 《Carrier Aggregation》 CA SCell 添加的小区的流程&#xff1a; SCell addition and removal&#xff1a; 1 The carrier aggregation additional SCells cannot be activated immediately…

路由器基础(二): BGP原理与配置

BGP 是边界网关协议&#xff0c;目前版本为BGP4, 是一种增强的距离矢量路由协议。该协议运行在不同AS 的路由器之间&#xff0c;用于选择AS之间花费最小的协议。BGP协议基于TCP协议&#xff0c;端口为179。使用面向连接的TCP 可以进行身份认证&#xff0c;可靠地交换路由信息。…

聚合SDK广告收益最大化的关键策略

在移动应用开发和运营中&#xff0c;广告收益一直是一个至关重要的因素。为了最大化应用的广告收益&#xff0c;开发者通常会选择使用聚合SDK&#xff08;Software Development Kit&#xff09;来集成多个广告网络和平台。这样可以提供更多的广告库存&#xff0c;增加广告展示的…