下面是大家的老师根据现有资源整理的一个C++学习路径(包含近30个练习项目)。
头条无法放外链这点真是让人下体疼啊啊…大家可以关注微信公众号“实验楼”并回复关键字“C++路径”获取所有项目地址。
“Repetition is the mother of all learning 重复是学习之母”
基础知识
- Linux 基础入门(新版)/2. Vim编辑器/3. Git 实战教程/4. GDB 简明教程/5. 跟偶一起来玩转Makefile
入门项目
1. C++ 实现太阳系行星系统
使用 C++实现 OpenGL GLUT 实现一个简单的太阳系行星系统,将涉及一些三维图形技术的数学基础、OpenGL 里的三维坐标系、OpenGL 里的光照模型、GLUT 的键盘事件处理。
2. C++实现运动目标的追踪
利用 OpenCV 来实现对视频中动态物体的追踪。进行本教程学习时,您需要先完成 C++实现太阳系行星运行系统的相关实验,才能进行之后的学习。
3. C++ 实现银行排队服务模拟
使用 C++对银行排队服务进行模拟,以事件驱动为核心思想,手动实现模板链式队列、随机数产生器等内容,进而学习概率编程等知识。4. 1小时入门增强现实技术基于OpenCV实现一个将3D模型显示在现实中的小例子,学习基于Marker的AR技术,既简单又有趣。
5. C++ 基于 OpenCV 实现实时监控和运动检测记录
使用 C++ 和 OpenCV 提供的库函数,实现摄像头的实时监控功能,并通过监控画面的运动检测选择是否记录视频。监控人员可选择输出图像的模式以更容易的分辨监控中的异常情况。6. 使用OpenCV&&C++进行模板匹配使用OpenCV&&C++进行模板匹配,在一张大图中去查找并圈出目标小图。你将学习到关于OpenCV的一些函数用法和模板匹配的完整流程。
7. 使用OpenCV进行图片平滑处理打造模糊效果
利用OpenCV中的平滑处理和线性滤波器对图片进行处理,打造模糊效果。将介绍归一化滤波器,高斯滤波器,中值滤波器,双边滤波器这四种滤波器的相关知识,并且会对“核”和卷积进行相应的讲解。8. C++ 实现即时通信软件使用C++实现一个具备服务端和客户端的即时通信聊天室,涉及网络编程,C++面向对象程序设计等知识。
9. C++实现课程管理系统
使用 C++ 实现一个课程管理系统,在这个过程中会介绍C++11的很多特性,同时可以熟悉Linux下的C++语言编译方法及简单的Makefile编写。
////中场休息,笑一笑吧
进阶项目
1. C++11/14 高速上手教程
如果你还在使用传统 C++,打着 C++ 的名号写出 C 语言代码,请停下来。本教程将带领你快速上手 C++11/14 的重要特性。
2. ffmpeg 结合 SDL 编写播放器
学习 C++ 利用 ffmpeg 解码视频数据,将解码后的视频数据播放出来。学习 ffmpeg 和 SDL 基本的用法。
3. 100 行 C++ 代码实现线程池
使用 C++ 及大量 C++11新特性设计并实现一个线程池库。
4. C++ 实现高性能内存池
获得内存池所分配的内存速度高于从堆中获得分配的内存的速度,一个长期稳定运行的服务在追求极致的过程中,实现内存池是必不可少的。和标准库中的默认分配器一样,内存池本质上也是分配器
5. C++ 开发 Web 服务框架
综合使用 C++11 及 Boost 中的 Asio 实现 HTTP 和 HTTPS 的服务器框架。6. C++ 打造 Markdown 解析器使用 C++ 实现 Markdown 解析器,并将解析的内容生成为 HTML。
7. C++ 使用 Crypto++ 库实现常用的加密算法
利用 Cryto++库 对字符串进行 AES 加密和解密,RSA 加密和解密,生成 MD5 值。其中主要用到了 Crypto++ 库,这是开源的C++数据加密算法库,支持如下算法:RSA、MD5、DES、AES、SHA-256等等。8. C++ 编写 json 生成器介绍 json 和一些常见的 json 库,并用 C++ 编写一个 json 生成器,生成 json 数据,并学习编写测试用例。
9. C++ 实现基数树
radix treeRadix树 , 这是一种基于二进制表示的键值的查找树,尤其适合处理非常长的、可变长度的键值,Patricia 的基本思想是构建一个二叉树。10. C++ 实现智能指针使用C++语言实现智能指针的过程,来了解C++基本程序设计的方法,包括类的定义与使用,运算符的重载,模板类的使用方法,以及引用计数技术。
////中场休息,笑一笑吧
高级项目
1. C++操作 redis 实现异步订阅和发布操作
redis 实现异步订阅和发布,其中将介绍 redis 基础知识,在linux中安装和使用 redis ,常用的 hiredis API,并实现一个例程。
2. C++ 实现简易 Docker 容器
Docker 的本质是使用 LXC 实现类似虚拟机的功能,进而节省的硬件资源提供给用户更多的计算资源。本项目将 C++ 与 Linux 的 Namespace 及 Control Group 技术相结合,实现一个简易 Docker 容器。
3. C++ 实现内存泄露检查器
内存泄漏一直是 C++ 中比较令人头大的问题, 即便是很有经验的 C++程序员有时候也难免因为疏忽而写出导致内存泄漏的代码。除了基本的申请过的内存未释放外,还存在诸如异常分支导致的内存泄漏等等。本项目将使用 C++ 实现一个内存泄漏检查器。
4. C++ 实现高性能 RTTI 库
RTTI 是运行时类型识别的英文缩写,C++ 本身提供了运行时类型检查的运算符 dynamic_cast 和 typeid,然而 dynamic_cast 的效率其实并不理想,需要牺牲一定性能。本项目将手动实现一个高性能 RTTI 库。
头条无法放外链这点真是让人下体疼啊啊…大家可以关注微信公众号“实验楼”并回复关键字“C++路径”获取所有项目地址。
有句话是这样说的:一件事,1000人想去做,100人开始做了,最终,只有1个人坚持到了最后。话虽没有绝对,但想想看,今天确实是你生命中最年轻的一天啦,所以,想要做的事,勇敢捡起来做吧!祝你学习顺利。