当前位置: 首页 > article >正文

C++类型推导与auto关键字

C类型推导与auto关键字类型推导是C11引入的重要特性通过auto和decltype关键字编译器可以自动推导变量的类型减少代码冗余并提高可维护性。auto关键字让编译器根据初始化表达式推导变量类型。#include#include#include#includevoid basic_auto_usage() {auto x 42;auto y 3.14;auto z hello;std::cout x type: int, value: x \n;std::cout y type: double, value: y \n;std::cout z type: const char*, value: z \n;auto vec std::vector{1, 2, 3, 4, 5};std::cout Vector size: vec.size() \n;}auto在迭代器使用中特别有用避免了冗长的类型声明。void auto_with_iterators() {std::map scores {{Alice, 95},{Bob, 87},{Charlie, 92}};for (auto it scores.begin(); it ! scores.end(); it) {std::cout it-first : it-second \n;}for (const auto pair : scores) {std::cout pair.first : pair.second \n;}}auto推导时会去除引用和const限定符需要显式添加。void auto_qualifiers() {int x 42;const int ref x;auto a ref;auto b ref;const auto c ref;a 100;std::cout x after modifying a: x \n;std::cout Type of a: int (copy)\n;std::cout Type of b: const int (reference)\n;std::cout Type of c: const int (const reference)\n;}decltype用于查询表达式的类型不会对表达式求值。void decltype_basic() {int x 42;decltype(x) y 100;std::cout y: y \n;const int ref x;decltype(ref) z x;std::cout Type of z preserves const and reference\n;}decltype(auto)结合了auto和decltype的特性保留表达式的完整类型信息。templatedecltype(auto) access(Container c, Index i) {return c[i];}void decltype_auto_example() {std::vector vec {1, 2, 3, 4, 5};decltype(auto) value access(vec, 2);value 100;std::cout Modified vector[2]: vec[2] \n;}auto可以用于函数返回类型推导。auto add(int a, int b) {return a b;}auto multiply(double a, double b) - decltype(a * b) {return a * b;}templateauto generic_add(T a, U b) - decltype(a b) {return a b;}void auto_return_type() {std::cout add(3, 4): add(3, 4) \n;std::cout multiply(2.5, 3.0): multiply(2.5, 3.0) \n;std::cout generic_add(10, 3.5): generic_add(10, 3.5) \n;}auto在lambda表达式中简化了类型声明。void auto_with_lambda() {auto lambda [](int x, int y) {return x y;};std::cout Lambda result: lambda(10, 20) \n;auto generic_lambda [](auto a, auto b) {return a b;};std::cout Generic lambda (int): generic_lambda(5, 10) \n;std::cout Generic lambda (double): generic_lambda(2.5, 3.5) \n;}结构化绑定使用auto解包复合类型。#includestd::tuple get_data() {return {42, 3.14, hello};}void structured_bindings() {auto [x, y, z] get_data();std::cout x: x , y: y , z: z \n;std::map scores {{Alice, 95}, {Bob, 87}};for (const auto [name, score] : scores) {std::cout name : score \n;}std::pair p {1, one};auto [id, text] p;id 2;std::cout Modified pair: p.first , p.second \n;}auto可以用于模板参数推导。templatestruct Constant {static constexpr auto value Value;};void template_auto() {Constant42 int_const;Constant3.14 double_const;std::cout Int constant: int_const.value \n;std::cout Double constant: double_const.value \n;}类型推导在复杂表达式中特别有用。void complex_type_deduction() {std::vector complex_data;complex_data.push_back({{numbers, {1, 2, 3}},{more, {4, 5, 6}}});for (const auto map : complex_data) {for (const auto [key, vec] : map) {std::cout key : ;for (auto val : vec) {std::cout val ;}std::cout \n;}}}auto不能用于函数参数但可以用于泛型lambda。void auto_limitations() {auto lambda [](auto x) {return x * 2;};std::cout Lambda with int: lambda(21) \n;std::cout Lambda with double: lambda(3.14) \n;}类型推导与完美转发结合使用。templateauto forward_wrapper(T arg) {return std::forward(arg);}void type_deduction_forwarding() {int x 42;auto result1 forward_wrapper(x);auto result2 forward_wrapper(100);std::cout Forwarded lvalue: result1 \n;std::cout Forwarded rvalue: result2 \n;}类型推导是现代C的重要特性它使代码更简洁、更易维护同时保持类型安全。

相关文章:

C++类型推导与auto关键字

C类型推导与auto关键字 类型推导是C11引入的重要特性,通过auto和decltype关键字,编译器可以自动推导变量的类型,减少代码冗余并提高可维护性。 auto关键字让编译器根据初始化表达式推导变量类型。 #include #include #include #include v…...

怎样快速去掉照片背景?2026年AI抠图工具实测对比与使用指南

还在为复杂的照片背景发愁?想要快速批量处理多张照片?本文将带你深入了解2026年最新的照片去背景方法,从零基础的在线工具到专业级别的桌面软件,再到智能AI抠图方案,帮你找到最适合自己的解决方案。快速去背景的核心方…...

怎么跨领域写文献综述?

刚踏入陌生交叉领域的科研人,最怕的就是面对动辄数十万篇的文献——翻了几十篇却找不到奠基性成果,读了一堆边缘文献导致研究方向跑偏,几周时间耗进去却连领域脉络都没理清,这种低效焦虑几乎每个科研人都经历过。传统方法里&#…...

TCP三次握手与四次挥手——连接管理的“仪式感“

**导读:**如果说HTTP是互联网世界的"通用语言",那么TCP就是支撑这一切的"地下管道"。但这条管道不是想通就通的——它有一套严格的"礼仪规范",也就是我们常说的三次握手和四次挥手。今天,我们就来聊…...

AI大神Karpathy的学习心法,普通人也能直接抄作业

美国时间2026年5月19日,AI 圈被一条重磅消息刷屏:大牛 Andrej Karpathy 在社交媒体上正式宣布加入 Anthropic。对于整个科技圈而言,他的动向影响力堪比当年乔丹宣布重返 NBA 大联盟 。这一次,他加入了 Anthropic 的预训练团队&…...

Apache Doris多模态能力深度解析:从技术架构到大厂落地实践

这篇文章是个人的学习总结,AI时代下的Doris在多模态能力的支持上越来越完善,个人总结了背景、技术方案以及各大公司落地场景,方便查阅,大家可以点击收藏。前言Apache Doris 4.0正式引入原生向量索引、AI 函数与混合检索能力&#…...

全志 V821 韦东山 Avaota-F1-B (3) I2C CST816T触摸屏适配

功能还在调试一、硬件连接/**********CST816T********** 1.引脚连接 PD18 -> i2c_clk PD18 -> i2c_sda PD22 -> tp_rst PD23 -> tp_int二、设备树修改tina-v821-v1.3/device/config/chips/v821/configs/avaota_f1/linux-5.4-ansc/board.dtstwi1_pins_default: twi1…...

YOLOv8 ROS:机器人视觉从2D感知到3D空间理解的架构演进

YOLOv8 ROS:机器人视觉从2D感知到3D空间理解的架构演进 【免费下载链接】yolov8_ros Ultralytics YOLOv8, YOLOv9, YOLOv10, YOLOv11, YOLOv12 for ROS 2 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8_ros 在机器人智能化浪潮中,视觉感知…...

AArch64架构SMCR_EL3寄存器详解与SME向量计算优化

1. AArch64系统寄存器与SMCR_EL3概述在Armv8-A/v9架构中,系统寄存器是处理器状态和功能控制的核心枢纽。作为特权级软件与硬件交互的接口,每个系统寄存器都承担着特定的控制、配置或状态监控职责。SMCR_EL3(SME Control Register at EL3&…...

Armv8/v9架构系统寄存器解析:SCXTNUM与SMCR深度剖析

1. AArch64系统寄存器概述 在Armv8/v9架构中,系统寄存器是处理器状态和控制的核心枢纽。与通用寄存器不同,系统寄存器专门用于配置处理器功能、监控运行状态以及实现安全隔离。AArch64架构通过精心设计的寄存器命名规范,使得寄存器的功能和访…...

Armv8/v9架构SCTLRMASK_EL2寄存器解析与应用

1. AArch64系统控制寄存器基础解析在Armv8/v9架构中,系统控制寄存器(System Control Registers)是处理器状态配置的核心组件,它们分布在不同的异常级别(EL0-EL3),用于管理处理器行为、内存系统、安全状态等关键功能。这些寄存器通常通过MRS/M…...

AArch64 SCTLR_EL3寄存器解析与安全配置实践

1. AArch64 SCTLR_EL3系统控制寄存器深度解析在Armv8-A/v9-A架构的安全世界中,SCTLR_EL3寄存器扮演着系统控制中枢的角色。作为EL3(最高特权级别)的系统控制寄存器,它直接决定了安全监控模式(Secure Monitor&#xff0…...

ARMv8/v9虚拟化核心:SCTLR_EL2寄存器详解与配置实践

1. AArch64 SCTLR_EL2系统寄存器深度解析在ARMv8/v9架构的异常级别(Exception Level)设计中,EL2作为虚拟化管理的核心层级,其系统控制寄存器SCTLR_EL2承载着关键的系统配置功能。这个64位寄存器不仅控制着EL2自身的内存管理和系统…...

AI科技热点日报 | 2026年5月22日

文章目录AI科技热点日报 | 2026年5月22日1、大模型技术突破OpenAI高管离职:安全主管Aleksander Madry转向AI经济研究Google发布Gemini Omni:多模态视频生成与编辑新突破ChatGPT集成Microsoft PowerPoint:AI生成演示文稿功能上线2、AI投融资动…...

解锁答辩新方式:依托 paperxie 智能 AI 轻松打造高质量毕业论文答辩 PPT

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 前言 临近毕业阶段,毕业论文定稿之后,答辩 PPT 制作就成为同学们首要攻克的任务。答辩 PPT 承载着整…...

毕业答辩效率突围!Paperxie AI 一键搞定高质量毕业论文PPT

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 每一年毕业季,绝大多数高校学生都会陷入同一个困境:论文定稿万事俱备,却卡在了毕业论文答…...

科研创作提质增效|依托 PaperXie 智能写作,高效完成期刊论文全流程创作

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/期刊论文https://www.paperxie.cn/ai/journalArticleshttps://www.paperxie.cn/ai/journalArticles 一、引言 学术研究领域中,期刊论文是展现科研成果、完成学业考核、学术成果发表的核心载体。…...

FlexNeRFer架构:动态精度MAC与稀疏计算优化解析

1. FlexNeRFer架构设计解析 1.1 多精度MAC单元设计原理 FlexNeRFer的核心创新在于其可动态调整精度的MAC(乘加运算单元)架构。传统固定精度MAC在面对NeRF这类需要混合精度计算的场景时,要么存在计算资源浪费(高精度模式&#xff…...

2026学数据分析对产品岗位的价值分析

一、数据分析在产品岗位中的核心价值数据分析能力帮助产品经理更精准地理解用户需求,优化产品决策。通过数据驱动的方法,减少主观臆断,提升产品迭代效率。数据可视化工具(如Tableau、Power BI)和统计分析能力&#xff…...

2026营销策划岗位学数据分析能提升职场能力吗

一、数据分析在营销策划中的核心价值数据驱动决策取代经验主义,精准定位用户需求与行为模式 实时监测市场趋势与竞品动态,优化营销策略的敏捷性 量化评估活动效果,提升ROI与资源分配效率二、2026年营销策划岗位的数据分析技能需求基础能力&am…...

李力/张明亮/周雍进等合作Nat Com | 山梨酸的高效异源生物合成

近日,福建师范大学李力教授团队与中国科学院大连化学物理研究所周雍进合作在天然产物生物合成与合成生物学领域取得重要突破,相关研究成果以“Toward sustainable food preservatives: high-level production of sorbic acid in engineered Saccharomyce…...

3步快速掌握AKShare:零基础获取金融数据的完整指南

3步快速掌握AKShare:零基础获取金融数据的完整指南 【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com/gh_mirrors/aks/aksha…...

同事悄悄告诉我,他月薪比我高1.8万,岗位一模一样。我去问HR,HR说,薪资保密。我才明白,保密的从来不是他的,是我的

最近看到一个帖子,有人说,他在公司干了三年,一直以为自己的薪资还算正常,直到有一天,关系不错的同事喝多了,把工资条拍给他看。两个人同一天入职,同一个岗位,同一个绩效评级。差了1.…...

API网关设计与实现完全指南

API网关设计与实现完全指南 前言 API网关是微服务架构中的统一入口,负责请求路由、负载均衡、安全认证、限流熔断等功能。一个设计良好的API网关可以极大地简化微服务架构的复杂度,提升系统的可维护性和安全性。本文将详细介绍API网关的设计理念、核心功…...

5分钟掌握抖音资源批量下载:开源douyin-downloader终极指南

5分钟掌握抖音资源批量下载:开源douyin-downloader终极指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...

服务注册与发现完全指南

服务注册与发现完全指南 前言 在微服务架构中,服务注册与发现是实现服务间通信的基础设施。服务注册中心维护着所有服务的实例信息,使得服务消费者能够动态地发现和调用服务提供者。本文将详细介绍服务注册与发现的核心概念、实现机制以及最佳实践。 一、…...

服务通信模式选择完全指南

服务通信模式选择完全指南 前言 在微服务架构中,服务间通信是核心基础设施之一。选择合适的通信模式直接影响系统的性能、可靠性和可维护性。本文将详细介绍同步通信和异步通信的各种模式,以及如何根据业务场景做出最佳选择。 一、服务通信概述 1.1 通信…...

Bazzite 42.20250417深度解析:云原生游戏操作系统的技术革命

Bazzite 42.20250417深度解析:云原生游戏操作系统的技术革命 【免费下载链接】bazzite Bazzite makes gaming and everyday use smoother and simpler across desktop PCs, handhelds, tablets, and home theater PCs. 项目地址: https://gitcode.com/gh_mirrors/…...

C++ 重载与重写的区别与实现

1 . 前言在面向对象语言中,经常提到重载与重写,以下内容直观描述两者差异成员函数被重载的特征: (1)相同的范围(在同一个类中); (2)函数名字相同;…...

3分钟完成缠论分析:ChanlunX通达信插件实现自动画中枢

3分钟完成缠论分析:ChanlunX通达信插件实现自动画中枢 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 还在为缠论分析的手动画线而烦恼吗?ChanlunX缠论插件为你带来终极解决方案&a…...