C++ 高效入门:从 C 语言到 C++ 的平滑过渡 (一)

C++ 高效入门:从 C 语言到 C++ 的平滑过渡 (一)

引言

本系列文章是笔者学习C++过程中的阶段性总结与心得,旨在为有需要的读者提供一份“从C到C++”的过渡参考。若文中存在疏漏或谬误,恳请各位在评论区不吝赐教,笔者将不胜感激。

需说明的是,本系列文章默认读者已具备扎实的C语言基础,因此对于与C语言重合的知识点(如基础语法、流程控制等)将不再赘述,聚焦于C++特有的核心特性与思维转换,助力读者高效入门C++。

C++ 高效入门系列链接

从“Hello World“ 开始 C++

一、数据类型

相信读者已熟悉C语言中此部分内容(与C++一致),故此处仅展示C++运行图供参考。

1.1 整型

#include<iostream> using namespace std;intmain(){//短整型short a =1;//整形int b =10;//长整型long b =100L;//长长整形longlong d =1000LL;return0;}

1.2 浮点型

#include<iostream> using namespace std;intmain(){//单精度float a =0.1f;//双精度double b =0.1;return0;}

1.3 字符型

#include<iostream> using namespace std;intmain(){char a ='A'; cout <<"a = "<< a << endl;return0;}

1.4 字符串

!!!此处与C语言有差异!!!
!!!此处与C语言有差异!!!
!!!此处与C语言有差异!!!

C++ 支持两种字符串定义方式:在使用C++风格时需要注意:
包含的头文件

在这里插入图片描述

1.5 布尔类型

在C99中C语言也引入了布尔类型。

布尔类型( bool ):
用于表示 真假的类型
true —— 1
false —— 0
在这里插入图片描述

二、数据的输入

2.1 关键字 cin

与C语言常见的 scanf函数 不同的是 C++中使用关键字cin 来输入数据。

语法:cin >> 变量

#include<iostream>#include<string> using namespace std;intmain(){//整型int num1 =0; cout <<"Before: "<< num1 << endl; cin >> num1; cout <<"After: "<< num1 << endl;//浮点数float num2 =0.12f; cout <<"Before: "<< num2 << endl; cin >> num2; cout <<"After: "<< num2 << endl;return0;}
在这里插入图片描述

三、运算符

相信读者已熟悉C语言中此部分内容(与C++一致),故此处仅展示C++运行图供参考。

3.1 加减乘除

在这里插入图片描述

3.2 赋值运算符

在这里插入图片描述

3.3比较运算符

在这里插入图片描述

3.4逻辑运算符

在这里插入图片描述

Read more

【C++】模拟实现 二叉搜索树

前言 二叉搜索树(Binary Search Tree,BST)作为一种经典的树形数据结构,凭借其高效的动态查找、插入和删除特性,在计算机科学领域有着广泛的应用。从底层实现来看,C++ 标准库中的 map、set、multimap、multiset 等关联式容器,其核心逻辑正是基于二叉搜索树(红黑树作为其平衡优化版本)构建。 相较于面向对象编程中的多态特性(侧重行为的动态绑定与代码复用),二叉搜索树聚焦于数据的有序存储与高效检索,其核心价值在于利用 “左子树值≤根节点值≤右子树值” 的结构性约束,将查找、插入、删除操作的时间复杂度控制在近似 O(logN)(理想的平衡状态下);而在最坏的单支树场景下,时间复杂度退化为 O(N),这也体现了数据结构设计中 “结构与性能” 的强关联性。 本文将从二叉搜索树的核心定义出发,逐步拆解节点设计、树的构建、插入、查找、删除等核心操作的实现逻辑,并区分 “仅存关键码(

By Ne0inhk
C++学习之旅【C++伸展树介绍以及红黑树的实现】

C++学习之旅【C++伸展树介绍以及红黑树的实现】

🔥承渊政道:个人主页 ❄️个人专栏: 《C语言基础语法知识》《数据结构与算法》 《C++知识内容》《Linux系统知识》 ✨逆境不吐心中苦,顺境不忘来时路!🎬 博主简介: 引言:前篇文章,小编已经介绍了关于C++AVL树的实现!相信大家应该有所收获!接下来我将带领大家继续深入学习C++的相关内容!本篇文章着重介绍关于C++伸展树介绍以及红黑树的实现!伸展树与红黑树是两类极具代表性的BBST,且在工程实践中各有不可替代的价值:伸展树摒弃了"严格平衡”的执念,通过“伸展”操作将最近访问的节点移至根节点,利用“局部性原理”优化频繁访问的场景,实现均摊O(logn)的时间复杂度,适合缓存、热点数据查询等场景;红黑树则通过给节点着色并遵守严格的颜色规则,确保树的最长路径不超过最短路径的两倍,以 “弱平衡” 换稳定的最坏O(logn)性能,是C++ STL 中 std::map、std:

By Ne0inhk

实时系统性能翻倍秘诀:深入C++26的CPU亲和性底层机制

第一章:实时系统性能翻倍的底层驱动力 在现代高并发、低延迟的应用场景中,实时系统的性能优化已成为核心挑战。实现性能翻倍并非依赖单一技术突破,而是由多个底层机制协同驱动的结果。这些机制共同作用于系统架构的各个层面,从内核调度到内存管理,再到数据处理流水线。 内核级调度优化 实时操作系统(RTOS)或启用 PREEMPT_RT 补丁的 Linux 内核,通过减少不可抢占区域(atomic sections)显著降低任务响应延迟。关键改进包括将自旋锁转换为可抢占的互斥锁,使高优先级任务能及时中断低优先级任务。 零拷贝数据传输 传统数据读写涉及多次用户态与内核态之间的数据复制,消耗大量 CPU 周期。采用零拷贝技术可直接在内核缓冲区与应用间共享内存,避免冗余拷贝。例如,在 Go 中使用 mmap 映射文件: // 使用 mmap 实现零拷贝文件访问 data, err := syscall.Mmap(int(fd), 0, fileSize, syscall.

By Ne0inhk
c++树形数据结构——树状数组,算法必看哟!!!

c++树形数据结构——树状数组,算法必看哟!!!

目录 一,简介 二,区分与前缀和的区别和联系 三,基本步骤演示 1,lowbit操作 2,lowbit和树状数组t[]的联系 1,update函数 2,getprefix函数 四,例题详解 例题1:蓝桥杯官网——殷老师排队 问题描述 输入格式 输出格式 样例输入 样例输出 数据规模 代码详解! 方法一:正确方法,树状数组 方法二,普通前缀和差分方法,时间复杂度高 例题2:23年蓝桥杯真题——异或和 问题描述 输入格式 输出格式 样例输入 样例输出 评测用例规模与约定 代码详解! 方法一:树状数组 方法2:更加简单直观的方法 注:本文题目均来自蓝桥杯官网公开题目,

By Ne0inhk