news 2026/4/28 9:23:48

C++提高编程学习(更新中....)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++提高编程学习(更新中....)

1 模板

1.1 模板的概念

模板是一种通用的编程工具,允许使用虚拟类型(泛型)定义函数或类,从而实现对不同数据类型的复用。通过模板编写的代码可以自动适应多种数据类型,减少重复代码。

模板的特点

  • 通用性:一套逻辑可适用于多种数据类型(如intfloat、自定义类等)。
  • 类型安全:编译时进行类型检查,避免运行时错误。
  • 编译时生成代码:编译器根据实际调用类型生成对应的具体函数或类。

1.2 函数模板

1.2.1 函数模板语法

作用:定义一个通用函数,其返回值类型和参数类型可用虚拟类型(如T)表示,调用时根据实际类型实例化。

语法

template <typename T> //template<class T> T functionName(T param1, T param2) { // 函数体 }

解释

  • template <typename T>声明模板,T为占位符类型。
  • 函数参数、返回值或局部变量均可使用T

示例代码

#include <iostream> using namespace std; template <typename T> T maxValue(T a, T b) { return a > b ? a : b; } int main() { // 1. 自动类型推导 cout << maxValue(3, 5) << endl; // 推导为 int cout << maxValue(3.14, 2.71) << endl; // 推导为 double // 2. 显式指定类型 cout << maxValue<double>(3, 2.71) << endl; // 强制为 double return 0; }

1.2.2 函数模板注意事项

  1. 自动类型推导的一致性
    推导的多个参数类型必须一致,否则编译失败。

    // 错误示例:a 是 int,b 是 double cout << maxValue(3, 2.71) << endl; // 编译错误
  2. 必须明确数据类型
    模板类型T必须能被编译器推断或显式指定。

    template <typename T> void printData(T data) { cout << data << endl; } int main() { printData(10); // 正确:推导为 int printData<int>(10); // 正确:显式指定 printData(); // 错误:无法推断 T }
  3. 特殊处理场景
    若函数模板与普通函数同名,优先调用普通函数(除非显式指定模板)。

    void print(int val) { cout << "普通函数" << endl; } template <typename T> void print(T val) { cout << "模板函数" << endl; } int main() { print(10); // 调用普通函数 print<int>(10); // 调用模板函数 }

扩展示例

// 多类型模板参数 template <typename T1, typename T2> void printPair(T1 a, T2 b) { cout << a << ", " << b << endl; } int main() { printPair(1, "Hello"); // 输出: 1, Hello }

1.2.3 函数模板案例

1.2.4 普通函数与函数模板的区别

1.2.5 普通函数与函数模板的调用规则

1.2.6 模板的局限性

1.3 类模板

2 STL初识

3 STL-常用容器

4 STL-函数对象

5 STL-常用算法

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 22:18:21

MyBatis-Plus代码生成器

MyBatis-Plus代码生成器 MyBatis-Plus代码生成器生成结果 MyBatis-Plus 代码生成器是 MP 提供的自动化代码生成工具&#xff0c;核心是基于数据库表结构&#xff0c;通过配置一键生成符合 MP 规范的全套分层代码&#xff08;包含实体类、Mapper 接口、Mapper XML、Service 层、…

作者头像 李华
网站建设 2026/4/23 8:16:03

UI+Widget:鸿蒙/Flutter等声明式UI框架的核心设计范式深度解析

上一篇文章讲解了鸿蒙UI方向的flutter&#xff0c;本篇文章就解释一下flutter和ArkUI中都经常提到的UIWidget,以下是上一篇文章链接&#xff1a; https://blog.csdn.net/2501_93575716/article/details/155827679?spm1001.2014.3001.5501 “UIWidget”是现代声明式UI框架&…

作者头像 李华
网站建设 2026/4/23 8:16:07

仅半年,半月回本的幻梦破灭,机器人的泡沫破灭得如此之快!

机器人曾被视为高科技产品&#xff0c;今年的春晚让机器人大出风头&#xff0c;由此掀起了一股炒作机器人的风气&#xff0c;部分人意图借着机器人租赁这个新赛道发财致富&#xff0c;然而如今机器人租赁市场已经崩塌&#xff0c;每天租金2万仅是传说的故事&#xff0c;而现实中…

作者头像 李华
网站建设 2026/4/23 8:15:46

如何选择技术博客平台并搭建属于你的知识库

技术写作是程序员职业生涯中重要的一环。它不仅能帮助整理碎片化的知识&#xff0c;还能在求职或晋升时作为有力的能力证明。面对市面上众多的博客平台&#xff0c;开发者往往会陷入选择困难。选择的核心在于理清自己的需求&#xff1a;是为了获取社区的自然流量&#xff0c;还…

作者头像 李华
网站建设 2026/4/23 8:15:35

Wan2.2-T2V-A14B在龙卷风形成机制科普中的空气涡旋建模

Wan2.2-T2V-A14B在龙卷风形成机制科普中的空气涡旋建模 在气象教育和科学传播领域&#xff0c;如何让公众“看见”那些肉眼无法捕捉、却又真实存在的自然现象&#xff1f;比如龙卷风——它不是凭空出现的怪物&#xff0c;而是大气中一系列精密物理过程演化的结果。然而&#xf…

作者头像 李华