news 2026/9/2 4:37:06

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/9/2 22:41:20

OpenHarmony Flutter 分布式任务调度:跨设备负载均衡与资源优化方案

前言在开源鸿蒙&#xff08;OpenHarmony&#xff09;全场景分布式生态中&#xff0c;跨设备任务调度是实现多设备算力协同、资源高效利用的核心技术。传统单设备应用受限于硬件性能&#xff0c;无法高效处理高负载任务&#xff08;如 AI 计算、视频渲染、大数据分析&#xff09…

作者头像 李华
网站建设 2026/9/2 16:13:27

探索Qt下的UI皮肤生成器:多风格与编译那些事儿

Qt下UI皮肤生成器&#xff0c;好几套UI皮肤风格。 Qt5.6.1_MinGW的debug下需要将Pro里的PRECOMPILED_HEADER注释掉&#xff0c;在release下编译无问题&#xff1b; 源码&#xff1a; 使用Qt5.6.1_MinGW&#xff0c;Qt5.7.1_msvc编译通过。在Qt开发的世界里&#xff0c;UI皮肤生…

作者头像 李华
网站建设 2026/9/2 21:42:19

区间DP第3课:区间DP应用案例实践2

区间DP第3课&#xff1a;区间DP应用案例实践2 题目描述 有 NNN 个不同的正整数 x1x_1x1​, x2x_2x2​, …, xNx_NxN​ 排成一排&#xff0c;我们可以从左边或右边去掉连续的 iii (1≤i≤n)(1 \le i \le n)(1≤i≤n) 个数&#xff08;只能从两边删除数&#xff09;&#xff0c;…

作者头像 李华
网站建设 2026/9/2 22:13:18

哔哩下载姬DownKyi终极指南:3步上手B站视频批量下载与8K资源保存

哔哩下载姬DownKyi终极指南&#xff1a;3步上手B站视频批量下载与8K资源保存 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水…

作者头像 李华
网站建设 2026/9/2 18:01:14

Day 32 类的定义和方法

题目 1&#xff1a;定义圆(Circle)类要求 题目 2&#xff1a;定义长方形(Rectangle)类 题目 3&#xff1a;图形工厂 浙大疏锦行

作者头像 李华
网站建设 2026/9/2 22:13:14

揭秘空间转录组数据分析:如何用R语言完成单细胞分辨率下的精准定位

第一章&#xff1a;揭秘空间转录组数据分析&#xff1a;从单细胞到空间定位空间转录组技术的出现&#xff0c;彻底改变了我们对组织微环境的理解。它不仅保留了单细胞分辨率的基因表达信息&#xff0c;还精确记录了每个细胞在组织中的物理位置&#xff0c;从而实现了“哪里表达…

作者头像 李华