当前位置: 首页 > news >正文

为啥要用C艹不用C?

在很多时候,有人会有这样的疑问

——为什么要用C++?C++相对于C优势是什么?

最近两年一直在做Linux应用,能明显的感受到C++带来到帮助以及快感

之前,我在文章里面提到环形队列

C语言,环形队列

环形队列到底是怎么回事?

用C实现到环形队列,是考验一个工程师的能力,但是到实际项目后,你还需要花时间在设计这些基础的东西,就会显得时间非常紧张。

在C++里面,很容易就可以给你搞一个Queue给你使用

如下

c1913e3023e75e6ab446fc43da07a82b.png

当然,除了使用Queue,你还有很多存储数据的数据结构选择

——使用std::list:

如果你需要在队列中间插入或删除元素,那么可以考虑使用std::list。std::list是一个双向链表,它可以方便地在任意位置插入或删除元素。然而,它的内存开销较大,且不支持随机访问。

——使用数组或std::vector:

如果你需要一个固定大小的队列,那么可以考虑使用数组或std::vector实现。这种实现方式具有较好的内存连续性,有助于提高缓存命中率。然而,如果队列需要动态调整大小,这种实现方式可能会导致额外的内存复制开销。

——使用环形缓冲区:

环形缓冲区是一种特殊类型的队列,它的头部和尾部是相互连接的。这种实现方式适用于数据流的读写操作,因为它可以无缝地处理缓冲区的溢出情况。实现环形缓冲区可以使用数组或std::vector作为底层存储结构。

——使用并发队列:

如果你需要在多线程环境中使用队列,那么可以考虑使用并发队列。C++标准库中的std::queue并不是线程安全的,但你可以使用第三方库,如Intel TBB或Microsoft PPL,或者使用C++11的std::mutex(锁)std::condition_variable来实现自己的线程安全队列。

——

做项目和研究东西是两回事,就好比开车,短距离开车没有自动驾驶感觉没问题,很多时候还觉得挺爽,但是如果把距离拉长,项目复杂度提高,没有自动驾驶能把人搞废掉。

而C++就好比一辆有ACC功能的汽车,他能满足你的大项目复杂度需求,不需要再去造一些重复的轮子。

并且,你可以大胆的相信std给你提供的东西。

当然了,至于那些遇到的很难解决解释的bug问题,我们这里就不讨论了,只能说明自动驾驶存在的某些bug。

f1b99cabc845712228b3aba322a8185b.png

http://www.lryc.cn/news/310444.html

相关文章:

  • Java:JVM基础
  • JavaSec 基础之五大不安全组件
  • python类的属性、方法、静态方法、静态方法类内部的调用、直接调用与实例化调用
  • haproxy集成国密ssl功能[下]
  • C++自学精简实践教程
  • 每日一题——LeetCode1572.矩阵对角线元素的和
  • mysql 常用命令练习
  • QT6 libModbus 用于ModbusTcp客户端读写服务端
  • 飞桨(PaddlePaddle)Tensor使用教程
  • 数据结构c版(3)——排序算法
  • 《Spring Security 简易速速上手小册》第5章 高级认证技术(2024 最新版)
  • 【七】【SQL】自连接
  • C语言while 与 do...while 的区别?
  • RK3568平台开发系列讲解(基础篇)内核错误码
  • 点云从入门到精通技术详解100篇-基于点云网络和 PSO 优化算法的手势估计(续)
  • 设计模式(十一)策略模式
  • Java 计算某年份二月的天数
  • unity 数学 如何计算线和平面的交点
  • Mysql DATETIME与TIMESTAMP的区别
  • hadoop基础
  • 2024目前三种有效加速国内Github
  • 2024高频前端面试题 HTML 和 CSS 篇
  • LeetCode 100231.超过阈值的最少操作数 I
  • Pygame教程01:初识pygame游戏模块
  • HTML和CSS (前端共三篇)【详解】
  • Linux——进程控制(二)进程等待
  • 多线程导入excel
  • 设计模式(十五)状态模式
  • Java基于SpringBoot的在线文档管理系统的设计与实现论文
  • 突破编程_C++_STL教程( list 的高级特性)