15个C++项目列表

作者: 蓝桥云课 | 来源:发表于2016-08-30 17:52 被阅读2730次

实验楼上有很多C++的实战项目,从简单到进阶,学习每个项目都可以掌握相应的知识点。

  • 如果你还是C++新手的话,那么这个C++的项目列表你可以拿去练手实战开发,毕竟学编程动手实践是少不了的!
  • 如果你不知道C++可以用来做哪些项目,可以应用在哪些地方,那么,这个项目列表拿去吧,可以看看C++可以做什么!

C++项目列表:

1、C++ 实现太阳系行星系统

项目使用 C++实现 OpenGL GLUT 实现一个简单的太阳系行星系统,将涉及一些三维图形技术的数学基础、OpenGL 里的三维坐标系、OpenGL 里的光照模型、GLUT 的键盘事件处理。

项目涉及的知识点:

  • C++ 语言基础
  • 基本的 Makefile
  • 基本的 OOP 编程思想
  • OpenGL GLUT 的结构基本使用
效果图

2、C++实现运动目标的追踪

这个项目是在前面一个项目的后续项目,利用 OpenCV 来实现对视频中动态物体的追踪。

项目涉及的知识点:

  • C++ 语言基础
  • g++ 的使用
  • 图像基础
  • OpenCV 在图像及视频中的应用
  • Meanshift 和 Camshift 算法

本次实验要实现的效果是追踪太阳系中运动的行星(图中选择了浅绿颜色轨道上的土星,可以看到追踪的目标被红色的椭圆圈住):

此处输入图片的描述

3、C++ 实现银行排队服务模拟

项目使用 C++对银行排队服务进行模拟,以事件驱动为核心思想,手动实现模板链式队列、随机数产生器等内容,进而学习概率编程等知识。作为可选进阶,这个模型同时还能稍加修改的应用到 CPU 资源争夺模型中。

项目涉及知识点:

  • OOP 编程思想
  • std::rand() 函数原理
  • 概率编程
  • 排队理论
  • 链式队列数据结构及其模板实现
  • 事件驱动的设计
  • 蒙特卡洛方法
  • CPU 资源争夺模型
  • 时间片轮转调度

让我们的程序能够给出类似下面的结果:

此处输入图片的描述

4、1小时入门增强现实技术

项目利用C++,基于OpenCV实现一个将3D模型显示在现实中的小例子,学习基于Marker的AR技术。

项目涉及知识点:

  • C++ 语言基础语法
  • AR 基本概念
  • 基于 Marker 的 AR 技术
  • OpenCV 程序开发
效果图

一个踩着魔鬼的步伐的漆黑的食人魔

5、100 行 C++ 代码实现线程池

为了追求性能,在服务器开发中我们经常要面临大量线程任务之间的调度和管理,该项目使用 C++ 及大量 C++11新特性设计并实现一个线程池库。

项目涉及知识点:

  • C++11 标准库特性
  • C++11 语言特性
    • Lambda 表达式
    • 尾置返回类型
  • 线程池模型
  • 测试驱动开发思想

编译代码并执行,一个可能的结果会向下面这样(显然,你的结果几乎不可能和这里的结果完全一样):

此处输入图片的描述

6、C++ 开发 Web 服务框架

服务器开发中 Web 服务是一个基本的代码单元,将服务端的请求和响应部分的逻辑抽象出来形成框架,能够做到最高级别的框架级代码复用。项目将综合使用 C++11 及 Boost 中的 Asio 实现 HTTP 和 HTTPS 的服务器框架。

项目涉及的知识点:

  • C++基本知识
    • 面向对象
    • 模板
    • 命名空间
    • 常用 IO 库
  • C++11 相关
  • Boost Asio 相关

过程截图一:

7、C++ 打造 Markdown 解析器

Markdown 几乎成为了程序员编写文档的标配,Markdown 的相关语法简单,解析 Markdown 文本能够加深日后编写编译器中词法分析的理解,本项目将使用 C++ 实现 Markdown 解析器,并将解析的内容生成为 HTML。

项目涉及知识点:

  • 词法分析技术
  • 语法树
  • DFS 深度优先搜索
  • C++11
  • 使用指针进行字符流处理
效果图

8、C++ 实现高性能内存池

在 C/C++ 中,内存管理是一个非常棘手的问题,我们在编写一个程序的时候几乎不可避免的要遇到内存的分配逻辑,这时候随之而来的有这样一些问题:是否有足够的内存可供分配? 分配失败了怎么办? 如何管理自身的内存使用情况? 等等一系列问题。

该项目实现一个内存池,并使用一个栈结构来测试我们的内存池提供的分配性能。最终,我们要实现的内存池在栈结构中的性能,要远高于使用 std::allocatorstd::vector

项目涉及的知识点:

  • C++ 中的内存分配器 std::allocator
  • 内存池技术
  • 手动实现模板链式栈
  • 链式栈和列表栈的性能比较

9、C++ 实现简易 Docker 容器

Docker 的本质是使用 LXC 实现类似虚拟机的功能,进而节省的硬件资源提供给用户更多的计算资源。本项目将 C++ 与 Linux 的 Namespace 及 Control Group 技术相结合,实现一个简易 Docker 容器。

项目涉及知识点:

  • Linux 相关知识
    • Namespace
    • Control Group
  • Linux 系统调用
  • C++
    • namespace
    • lambda expression
    • C/C++ 混合编译

最后我们将为容器实现下面这些功能:

  • 独立的文件系统
  • 网络访问的支持
  • 容器资源的限制
此处输入图片的描述

10、C++ 实现内存泄露检查器

内存泄漏一直是 C++ 中比较令人头大的问题, 即便是很有经验的 C++程序员有时候也难免因为疏忽而写出导致内存泄漏的代码。除了基本的申请过的内存未释放外,还存在诸如异常分支导致的内存泄漏等等。本项目将使用 C++ 实现一个内存泄漏检查器。

项目涉及的知识点:

  • new 操作符重载
  • __FILE____LINE__ 预定义宏
  • 头文件中的静态变量
  • std::shared_ptr 智能指针
效果图

11、C++ 使用 Crypto++ 库实现常用的加密算法

该项目利用 Cryto++库 对字符串进行 AES 加密和解密,RSA 加密和解密,生成 MD5 值。其中主要用到了 Crypto++ 库,这是开源的C++数据加密算法库,支持如下算法:RSA、MD5、DES、AES、SHA-256等等。

该项目涉及知识点:

  • 安装 Crypto++ 库并检验
  • 学习 MD5 摘要算法
  • 学习 AES 加密算法

12、C++ 实现高性能 RTTI 库

RTTI 是运行时类型信息的英文缩写,C++ 本身提供了运行时类型检查的运算符 dynamic_casttypeid,然而dynamic_cast 的效率其实并不理想,需要牺牲一定性能。本项目将手动实现一个高性能 RTTI 库。

项目涉及的知识点:

  • 运行时类型检查 dynamic_cast, typeid
  • 显式类型转换 static_cast, const_cast, reinterpret_cast
效果图

13、c++操作 redis 实现异步订阅和发布

该项目操作 redis 实现异步订阅和发布,其中将介绍 redis 基础知识,在linux中安装和使用 redis ,常用的 hiredis API,并实现一个例程。

该项目涉及知识点:

  • 介绍 Redis 的基础知识
  • 安装使用 Redis
  • 安装 hiredis 库,并编写测试程序
  • 发布订阅模式者模式介绍
  • 编写发布者/订阅者相关模块
  • 编写 makefile

14、C++ 实现基数树 radix tree

对于长整型数据的映射,如何解决 Hash 冲突和 Hash 表大小的设计是一个很头疼的问题。radix 树就是针对这种稀疏的长整型数据查找,能快速且节省空间地完成映射。该项目就带你用C++实现基数树 radix tree。

项目涉及知识点:

  • 泛型
  • 析构
  • 运算符重载
  • 双向链表
  • ​数据结构
image.png

15、C++基于OpenCV实现实时监控和运动检测记录

该项目使用C++和OpenCV提供的库函数,实现摄像头的实时监控功能,并通过监控画面的运动检测选择是否记录视频。监控人员可选择输出图像的模式以更容易的分辨监控中的异常情况。

项目涉及知识点:

  • 对摄像头数据的捕获
  • 对捕获到的监控帧作背景处理
  • 对监控视频做运动检测并记录视频

以下几张分别是程序在不同显示模式下的显示情况,你可以通过切换-mog1-mog2-src来自己观察对应的效果。

运行截图
运行截图
运行截图
运行截图
运行截图

以上介绍的15个项目都是用C++来实现的,所以,还在等什么?快去动手开发吧!

相关文章

  • 适合C++/C新手的项目列表

    啊,最近很多童鞋问我C以及C++的项目,或者C和C++可以做什么,所以我就列了这个项目列表,C/C++语言学习者可...

  • 15个C++项目列表

    实验楼上有很多C++的实战项目,从简单到进阶,学习每个项目都可以掌握相应的知识点。 如果你还是C++新手的话,那么...

  • C++与Rust引用外部符号的比较

    文档列表见:Rust 移动端跨平台复杂图形渲染项目开发总结 - 目录 通常,C/C++通过#include导入外部...

  • C++初始化列表

    引言 用c++的人都知道,c++的构造函数具有初始化列表,初始化列表有什么作用?什么情况下必须使用初始化列表...

  • 2018-10-30

    这几周的任务 1.任务列表:用c++写一个小项目,多加练习,英语四级,微信小...

  • HTML——列表

    无序列表 无序列表是一个项目的列表,此列项目使用项目符号进行标记。 无序列表始于 标签。每个列表项始于 。 项目...

  • JNI基础

    AS新建C++工程 在新建项目的面板,勾选Include C++ support,新建的项目自动包含C++配置。 ...

  • C++与Rust数据类型对应关系

    文档列表见:Rust 移动端跨平台复杂图形渲染项目开发总结 - 目录 C++以64位系统为编译目标时数据类型与Ru...

  • markdown 学习

    MarkDown 学习 无序列表: 项目1 项目2 项目3 有序列表: 项目1 项目2 项目3

  • 研发狗日记12 研发狗的福利来啦!

    1.狗一样的【项目责任列表】和项目管理狗的【项目责任列表】 1.1狗一样的【项目责任列表】 1.2 修改意见列表1...

网友评论

    本文标题:15个C++项目列表

    本文链接:https://www.haomeiwen.com/subject/khxqettx.html