【C++藏宝阁】C++介绍:从发展历程到现代应用

【C++藏宝阁】C++介绍:从发展历程到现代应用
在这里插入图片描述


🌈个人主页:聆风吟
🔥系列专栏:C++藏宝阁
🔖少年有梦不应止于心动,更要付诸行动。


文章目录

📚专栏订阅推荐

专栏名称专栏简介
C++藏宝阁本专栏聚焦学习阶段核心知识点,深耕基础与实战,干货笔记持续更新,和大家共学共进,夯实编程功底。
数据结构手札本专栏主要是我的数据结构入门学习手札,记录个人从基础到进阶的学习总结。
数据结构手札・刷题篇本专栏是《数据结构手札》配套习题讲解,通过练习相关题目加深对算法理解。

一、初识 C++

在这里插入图片描述

C++ 是一门静态类型编译型的通用编程语言。它起源于 C 语言,由丹麦科学家 Bjarne Stroustrup 在贝尔实验室开发,早期被称为 “C with Classes”。作为 C 语言的拓展与升级,C++ 具备以下核心特征:

  • 高度兼容C:可直接复用绝大多数C语言的代码与库文件,保证了良好的生态延续性。
  • 支持多范式编程:不仅支持面向对象编程(通过类、继承、多态),还支持泛型编程(通过模板)和过程化编程,能灵活适配不同的开发场景与设计思想。
  • 强大的性能与控制力:凭借直接操作内存、高效的编译优化以及对底层硬件的操作能力,C++ 成为了对性能有极致要求领域的首选语言。
  • 丰富的现代特性:通过引入异常处理、命名空间、以及功能强大的 STL(标准模板库) 等,极大地提升了开发效率与代码质量。

正是这些特性,使得 C++ 能够在系统底层开发与高性能应用领域始终占据着不可替代的核心地位。

在这里插入图片描述

二、C++ 的发展历程与版本迭代

2.1 发展历程

第一阶段(1979 - 1983):从 C 到 “C with Classes”
C++ 的发展始于20世纪70年代末,其诞生源于对C语言功能扩展的需求 —— 当时C语言虽高效灵活,但在应对复杂大型项目时,缺乏模块化和代码复用的有效机制。1979年,丹麦计算机科学家本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)在贝尔实验室工作期间,开始着手在C语言基础上引入类(Class)概念,旨在结合C语言的高性能与Simula语言的面向对象特性,这一早期探索版本被命名为 “C with Classes”(带类的C),成为C++的雏形。

早期的C++代码示例:

// 早期的 "C with Classes" 代码classvector{int* p;int sz;public:vector(int s){ p =newint[sz = s];}// 构造函数~vector(){delete[] p;}// 析构函数int&operator[](int i){return p[i];}// 运算符重载};

第二阶段(1983-1998):命名确立与标准化奠基
1983 年,“C with Classes” 正式更名为 C++++取自 C 语言的自增运算符,寓意是 C 语言的增强版,同时新增虚函数、运算符重载、引用、常量等关键特性,解决了早期面向对象设计的诸多痛点。1985年,Bjarne Stroustrup 出版了《The C++ Programming Language》一书,系确立了 C++ 的核心语法规范,这是 C++ 首个权威参考手册,标志着 C++ 从实验室走向开发者社区。

20世纪90年代,C++进入快速发展期,大量企业和开发者参与到语言生态建设中,各类编译器(如GCC、Clang、MSVC)相继支持C++,相关的类库、开发工具也不断丰富。为解决不同实现版本之间的兼容性问题,标准化工作被提上日程,1998年,国际标准化组织(ISO)正式发布首个C++标准(C++98),标志着C++从一门实验性语言走向成熟规范的通用编程语言。此后,C++的发展始终围绕兼容历史代码提升开发效率适配新硬件场景三大核心目标,持续迭代优化。

C++98示例 - 标准化带来的变化

// C++98标准 正确使用示例(原写法C++11才支持)#include<vector>#include<algorithm>#include<iostream>intmain(){ std::vector<int> vec; vec.push_back(3); vec.push_back(1); vec.push_back(4); vec.push_back(1); vec.push_back(5); std::sort(vec.begin(), vec.end());// 算法库for(size_t i =0; i < vec.size();++i){ std::cout << vec[i]<<" ";}return0;}

2.2 版本迭代

C++ 的版本更新以国际标准化组织(ISO)发布的官方标准为核心节点,各版本均在保留向后兼容的基础上,针对性补充新特性、优化语法细节,核心版本如下:

时间阶段内容
1998年C++98C++官方第一个版本,绝大多数编译器都支持,得到了国际标准化组织(ISO)和协会认可,以模板方式重写C++标准库,引入了STL(标准模板库)
2003年C++03主要针对C++98标准中的语法漏洞和歧义进行修复,仅少量细节调整,目的是提升标准的严谨性和编译器实现的一致性,确保不同平台下的代码兼容性。
2011年C++11堪称 C++ 发展的里程碑式版本,被称为 “现代 C++ 的起点”。它彻底革新了 C++ 的开发体验,新增自动类型推导auto、Lambda 表达式、右值引用(移动语义)、智能指针shared_ptr/unique_ptr、基于范围的 for 循环等核心特性,既解决了 C++ 长期被诟病的内存管理繁琐问题,又大幅提升开发效率,让 C++ 摆脱 “老旧难用” 的标签。
2014年C++14基于 C++11 做细节完善,比如支持泛型 Lambda、函数返回值自动推导、新增std::make_unique,让 C++11 的特性用起来更顺手,没有颠覆性变化。
2017年C++17进一步补充实用特性,优化大型项目开发体验。核心更新:结构化绑定(可同时获取多个变量的值)、if constexpr条件编译增强、折叠表达式简化模板编程、文件系统库(std::filesystem)标准化,同时新增并行算法库,提升多线程编程效率。
2020年C++20继 C++11 后的又一重大更新,核心解决 C++ 的 “历史包袱”。引入模块(Modules)替代传统头文件,彻底解决头文件重复包含、编译慢的问题;新增概念(Concepts)约束模板参数,让模板错误提示更清晰;支持协程(Coroutines),适配高并发异步编程;还有范围库(Ranges),让容器操作更简洁,这四大特性让 C++ 向现代化语言又迈一大步。
2023年C++23以完善C++20特性、填补功能空白为主。主要更新:标准化网络库、增强协程功能、完善范围库与文件系统库,同时优化了数值计算相关的API,进一步提升语言的工业级应用能力。
在这里插入图片描述


本系列文章将核心聚焦于当前工业界应用最为广泛的C++98C++11两大标准。通过对这两大基石性标准进行扎实系统的学习,待基础筑牢、理解通透之后,再进一步涉猎 C++14、C++17、C++20 等后续更新特性,必将迎来水到渠成的提升,达到事半功倍的学习效果。


三、C++ 编程语言排行榜

TIOBE排⾏榜是根据互联⽹上有经验的程序员、课程和第三⽅⼚商的数量,并使⽤搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube和Baidu(百度)统计出排名数据,只是反映某个编程语⾔的热⻔程度,并不能说明一门编程语⾔好不好,或者一门所编写的代码数量多少。

2025年12⽉TIOBE发布的编程语言排行榜

在这里插入图片描述


在这里插入图片描述

四、C++ 在工作领域中的应用

C++的应⽤领域服务器端、游戏(引擎)、机器学习引擎、⾳视频处理、嵌⼊式软件、电信设备、⾦融应⽤、基础库、操作系统、编译器、基础架构、基础⼯具、硬件交互等很多⽅⾯都有。

  1. 大型系统软件开发:如编译器、数据库、操作系统、浏览器等等
  2. ⾳视频处理:常⻅的⾳视频开源库和⽅案有FFmpeg、WebRTC、Mediasoup、ijkplayer,⾳视频开发最主要的技术栈就是C++。
  3. PC客⼾端开发:⼀般是开发Windows上的桌⾯软件,⽐如WPS之类的,技术栈的话⼀般是C++和QT,QT 是一个跨平台的 C++图形用户界面(Graphical User Interface,GUI)开发框架。
  4. 服务端开发:各种⼤型应⽤⽹络连接的⾼并发后台服务。这块Java也⽐较多,C++主要⽤于⼀些对性能要求⽐较⾼的地⽅。如:游戏服务、流媒体服务、量化⾼频交易服务等
  5. 游戏引擎开发:很多游戏引擎就都是使⽤C++开发的,游戏开发要掌握C++基础和数据结构,学习图形学知识,掌握游戏引擎和框架,了解引擎实现,引擎源代码可以学习UE4、Cocos2d-x等开源引擎实现
  6. 嵌⼊式开发:嵌⼊式把具有计算能⼒的主控板嵌⼊到机器装置或者电⼦装置的内部,通过软件能够控制这些装置。⽐如:智能⼿环、摄像头、扫地机器⼈、智能⾳响、⻔禁系统、⻋载系统等等,粗略⼀点,嵌⼊式开发主要分为嵌⼊式应⽤和嵌⼊式驱动开发。
  7. 机器学习引擎:机器学习底层的很多算法都是⽤C++实现的,上层⽤python封装起来。如果你只想准备数据训练模型,那么学会Python基本上就够了,如果你想做机器学习系统的开发,那么需要学会C++。
  8. 测试开发/测试:每个公司研发团队,有研发就有测试,测试主要分为测试开发和功能测试,测试开发⼀般是使⽤⼀些测试⼯具(selenium、Jmeter等),设计测试⽤例,然后写⼀些脚本进⾏⾃动化测试,性能测试等,有些还需要⾃⾏开发⼀些测试⽤具。功能测试主要是根据产品的功能,设计测试⽤例,然后⼿动的⽅式进⾏测试。
在这里插入图片描述

📝全文总结

本文系统梳理了C++的发展脉络与应用价值:

  • 🚀 发展简史:从1979年“C with Classes”起步,到1998年首个国际标准C++98诞生,再到里程碑式的C++11引入现代特性,C++完成了从实验语言到工业标准的演进。
  • 📈 行业地位:常年稳居编程语言排行榜前五,证明了其在工业界不可替代的地位和持久需求。
  • 💼 广泛应用:在游戏开发、操作系统、嵌入式系统、音视频处理、金融服务等对性能要求极高的领域都是核心选择。
  • 🎯 学习路径:建议以C++98和C++11为起点,打好面向对象、模板、STL等基础后,再循序渐进学习后续版本新特性。

C++虽有一定学习曲线,但其带来的系统级编程能力和性能优化理解,将成为开发者宝贵的技术资产。

今天的干货分享到这里就结束啦!如果觉得文章还可以的话,希望能给个三连支持一下,聆风吟的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的最大动力!

在这里插入图片描述

Read more

我的算法修炼之路--8——预处理、滑窗优化、前缀和哈希同余,线性dp,图+并查集与逆向图

我的算法修炼之路--8——预处理、滑窗优化、前缀和哈希同余,线性dp,图+并查集与逆向图

💗博主介绍:计算机专业的一枚大学生 来自重庆 @燃于AC之乐✌专注于C++技术栈,算法,竞赛领域,技术学习和项目实战✌💗 💗根据博主的学习进度更新(可能不及时) 💗后续更新主要内容:C语言,数据结构,C++、linux(系统编程和网络编程)、MySQL、Redis、QT、Python、Git、爬虫、数据可视化、小程序、AI大模型接入,C++实战项目与学习分享。 👇🏻 精彩专栏 推荐订阅👇🏻 点击进入🌌作者专栏🌌: Linux系统编程✅ 算法画解 ✅ C++ ✅ 🌟算法相关题目点击即可进入实操🌟 感兴趣的可以先收藏起来,请多多支持,还有大家有相关问题都可以给我留言咨询,希望希望共同交流心得,一起进步,你我陪伴,学习路上不孤单! 文章目录 * 前言 * 题目清单 * 1.寻宝 * 2.村村通

By Ne0inhk
C++/数据结构:哈希表知识点

C++/数据结构:哈希表知识点

目录 哈希表 理解哈希表 哈希值(整形) BKDR哈希   异或组合  hash_combine 哈希函数 直接定址法 除留余数法 平方取中法 基数转换法 哈希冲突 开放定址法 哈希桶 unordered_map和unorder_set如何共用一个哈希桶模板类 stl的哈希桶中Insert如何得到的键值 键为自定义类型的处理         前言:本篇文章前半部分内容为哈希表的原理, 从上到下按照理解链逐层递进。 最后三个小标题占了比较大的篇幅, 是结合c++代码来叙述, 主要内容为stl中的哈希桶如何封装的。 如果有错误的地方, 欢迎友友们指正哦。         ps:本篇文章一直到哈希桶,除了最后三个小标题,c++和java的同学都可以看, 讲的是数据结构, 即便有c++代码也很简单哦。 哈希表         首先要理解哈希和哈希表有什么不同。 哈希就是映射, 是一种算法思想。 哈希表就是映射表, 是利用映射这种思想写出的一种数据结构。          所有的哈希表的算法流程都是类似的——拿到一个key, 利用哈希函数进行hash

By Ne0inhk
【动态规划】斐波那契数列模型

【动态规划】斐波那契数列模型

📝前言说明: * 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分 * 每题主要记录:(1)本人解法 + 本人屎山代码;(2)优质解法 + 优质代码;(3)精益求精,更好的解法和独特的思想(如果有的话) * 文章中的理解仅为个人理解。如有错误,感谢纠错 🎬个人简介:努力学习ing 📋本专栏:C++刷题专栏 📋其他专栏:C语言入门基础,python入门基础,C++学习笔记,Linux 🎀ZEEKLOG主页 愚润泽 你可以点击下方链接,进行不同专题的动态规划的学习 点击链接开始学习斐波那契数列模型路径问题简单多状态(一)简单多状态(二)子数组系列(一)子数组系列(二)子序列问题(一)子序列问题(二)回文串(一)回文串(二)两个数组dp问题(一)

By Ne0inhk