news 2026/5/9 21:15:43

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/5/9 10:55:13

脑机接口:破解大脑密码,连接意识与机器的未来之门

脑机接口&#xff1a;破解大脑密码&#xff0c;连接意识与机器的未来之门 你是否幻想过&#xff0c;无需动手敲键盘、动嘴发指令&#xff0c;仅靠“意念”就能操控手机、驾驶汽车&#xff0c;甚至让瘫痪的肢体重新活动&#xff1f;这不是科幻电影的桥段&#xff0c;而是脑机接口…

作者头像 李华
网站建设 2026/5/8 21:58:39

BepInEx框架实战指南:从入门到精通的Unity模组开发全解析

BepInEx框架实战指南&#xff1a;从入门到精通的Unity模组开发全解析 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 嘿&#xff0c;Unity开发者们&#xff01;你是否曾经遇到过这…

作者头像 李华
网站建设 2026/5/6 16:36:36

2026护士资格考试报名照审核全流程

作为已经上岸的学姐&#xff0c;真的要吐槽卫生&护士资格报名的照片审核&#xff01;当年因为照片格式不对反复改&#xff0c;差点错过报名时间&#x1f62d; 今天把踩坑经验整理出来&#xff0c;宝子们别再踩雷啦&#xff01;&#x1f4f8; 先划重点&#xff01;照片硬性要…

作者头像 李华
网站建设 2026/5/9 5:12:18

Hadoop-动态刷新hdfs/yarn配置

在很多时候&#xff0c;修改了hadoop的配置后&#xff0c;希望立即生效&#xff0c;但是线上还有任务在执行&#xff0c;不能重启&#xff0c;可以执行以下命令让修改后的hdfs/yarn配置生效&#xff1b; 0、刷新yarn集群的队列 执行命令&#xff1a; ${HADOOP_HOME}/bin/yarn…

作者头像 李华
网站建设 2026/5/9 9:05:02

标签的加工方式

标签的时态角度分类从用户标签的时态角度(如图 6-4所示)&#xff0c;可以将标签分为静态数据、基于时点的动态数据和基于期间的动态数据。静态数据也被称为属性数据&#xff0c;数量较少&#xff0c;如性别、出生年月、出生城市等。状态数据基于时点的动态数据也被称为状态数据…

作者头像 李华
网站建设 2026/5/4 16:26:01

2026年产品经理的路应该怎么走?

在互联网裁员潮与AI浪潮的双重冲击下&#xff0c;不少产品经理陷入职业焦虑&#xff1a;这个岗位还有前途吗&#xff1f; 2025年&#xff0c;一个不容置疑的事实摆在所有产品经理面前&#xff1a;不懂大模型的产品人&#xff0c;正逐渐失去核心竞争力。工信部最新数据显示&…

作者头像 李华