typedef 和 using 区别

news/2024/9/24 23:28:17/

        typedef 和 using 都可以用于定义一个新类型。typedef 用于c语言中,被c++继承,目的是为已存在的类型创建一个别名。

typedef 用法

typedef old_type new_type

例如:

typedef int Integer;
typedef std::vector<int> IntVector;
typedef void (*FunctionPointer)(double);

using 则是c++11 新引入的语法, 可以用来替换typedef 定义别名的功能,并有更多的灵活性。

例如

using Integer = int;
using IntVector = std::vector<int>;
using FunctionPointer = void (*)(double);

           using 的语法通常被认为更加清晰和直观,尤其是涉及到模板别名时。以下是 usingtypedef 其中一个主要区别的例子,这涉及到模板别名

template <typename T>
struct MyType {typedef std::vector<T> type;
};

        使用时应该写成 MyType<int>::type VecType; (typedef 不支持模板类型的定义);

而using则可以

template <typename T>

using MyType = std::vector<T>;

 使用时,MyType<int> VecType1; MyType<std::string> VecType2;

(参考 c++ primer , “模板类型别名“ 部分)

总结:

  1. typedef 和 using 都可以用来定义类型别名,但 using 语法更清晰直观。
  2. using 支持模板别名,这是 typedef 无法做到的。
  3. 推荐在C++代码中preferentially使用 using 语法来定义类型别名,特别是涉及模板时。
  4. 对于需要与旧的 C 代码或早期的 C++ 代码保持兼容的情况,你可能仍然会看到 typedef 的使用。

        


http://www.ppmy.cn/news/1464180.html

相关文章

【放球问题 乘法原理 唯一分解定理】1735. 生成乘积数组的方案数

本文涉及知识点 【组合数学 隔板法 容斥原理】放球问题 乘法原理 唯一分解定理 本题同解 【唯一分解定理】【动态规划】【前缀和】1735生成乘积数组的方案数 LeetCode 1735. 生成乘积数组的方案数 给你一个二维整数数组 queries &#xff0c;其中 queries[i] [ni, ki] 。…

GB报文中的Cseq值的注意点

一、 问题现象 【问题现象】NVR使用GB接三方平台发现倍速回放时&#xff0c; 【现场拓扑】现场拓扑如下 &#xff08;1&#xff09; NVR侧使用家用宽带的方式&#xff0c;通过国标跨公网接入三方平台。 图1.1&#xff1a;网络拓扑 二、 抓包分析 INVITE sip:420000004013200…

Java 读取 xml 文件的五种方式

在编写与 XML 数据交互的现代软件应用时&#xff0c;有效地读取和解析 XML 文件是至关重要的。XML&#xff08;可扩展标记语言&#xff09;因其灵活性和自我描述性&#xff0c;已成为数据存储和传输的一种普遍格式。对于 Java 开发者来说&#xff0c;Java 提供了多种工具和库来…

JavaScript 模板字符串

JavaScript 模板字符串是一种允许在字符串中嵌入表达式的特殊字符串语法。它们以反引号&#xff08;&#xff09;包围&#xff0c;并使用${}符号来表示需要插入的表达式。 模板字符串可以包含任何有效的 JavaScript 表达式&#xff0c;包括变量、函数调用、算术运算等。在插入…

用香橙派AIpro部署大模型、安装宝塔搭建私有随身WEB开发环境

什么是香橙派 Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能 AI 开发板&#xff0c;其搭载了昇腾 AI 处理器&#xff0c;可提供 8TOPS INT8 的计算能力&#xff0c;内存提供了 8GB 和 16GB两种版本。可以实现图像、视频等多种数据分析与推理计算&#xff0c;可广泛…

MySQL 使用 binlog 找回已删除数据

背景&#xff1a;使用 delete 删除数据少添加了条件 mysqlbinlog --base64-outputdecode-rows -v --start-datetime"2024-05-27 11:48:48" --stop-datetime"2024-05-27 12:59:52" binlog文件 > 转后sql 使用其他方式&#xff0c;转换的SQL并没有sql语…

day12

第一题 本题我们可以使用以下方法&#xff1a; 方法一&#xff1a; 使用hash表<元素&#xff0c;出现次数>来统计字符串中不同元素分别出现的次数&#xff0c;当某一个元素的次数大于1时&#xff0c;返回false&#xff0c;如果每个元素的出现次数都为1&#xff0c;则返回…

nginx安装部署问题

记一次nginx启动报错问题处理 问题1 内网部署nginx&#xff0c;开始执行make&#xff0c;执行不了&#xff0c;后面装了依赖的环境 yum install gcc-c 和 yum install -y pcre pcre-devel 问题2&#xff0c;启动nginx报错 解决nginx: [emerg] unknown directive “stream“ in…