导图社区 C与Cplus学习大纲
这是一篇关于C与Cplus学习大纲思维导图,"从零玩转C/C 全栈开发!这份指南涵盖Linux系统编程到QT界面设计,助你快速进阶内容分为四大模块:C/C 基础(语法、数据结构、STL)、Linux实战(进程通信、高并发服务器、文件I/O)、QT开发(界面编程、自定义控件、跨平台项目),以及设计模式与UML应用包含贪吃蛇、电子词典等实战案例,详解线程同步、TCP/UDP等核心技术,适合入门到提高的全阶段学习。"
提示: 本内容由社区用户上传并分享。平台不对内容的真实性、合法性、知识产权归属及是否侵害第三方权利进行事前审核或保证。本内容可能包含受版权保护的图片、字体或其他第三方素材,使用前请自行确认授权范围。
这是一篇关于C与Cplus学习大纲思维导图,"从零玩转C/C 全栈开发!这份指南涵盖Linux系统编程到QT界面设计,助你快速进阶内容分为四大模块:C/C 基础(语法、数据结构、STL)、Linux实战(进程通信、高并发服务器、文件I/O)、QT开发(界面编程、自定义控件、跨平台项目),以及设计模式与UML应用包含贪吃蛇、电子词典等实战案例,详解线程同步、TCP/UDP等核心技术,适合入门到提高的全阶段学习。"
这是一篇关于关于婚姻的50件小事思维导图,完整覆盖婚前认知、夫妻相处、婆媳矛盾、女性独立、经济边界、亲子关系、情绪包容、原生家庭、亲密关系底线等全维度婚姻内容,每条分支独立对应一条婚恋感悟,逻辑清晰、观点分层直观。内容涵盖多重现实婚恋痛点:生育二胎规划、婆媳矛盾化解、婚姻融合而非单方面维系、女性经济独立的重要性、不盲目付出的婚恋底线、夫妻两代人分开居住的利弊、原生家庭对婚姻的影响、不要试图改变伴侣、浪漫与现实婚姻的平衡、忠诚与选择的边界、家务分工、三观契合的意义等大众高频关心的婚姻话题,精准戳中当代男女婚后相处、婚前择偶的各类困惑,将零散的情感观点整合为条理清晰的可视化框架。不管是备婚人群梳理婚前认知、规避婚后矛盾,已婚夫妻复盘相处问题、改善夫妻沟通,情感博主整理婚恋文案素材、制作情感科普内容,婚恋咨询师梳理教学讲义、给来访者做关系引导,普通女性记录自我成长感悟、理清婚恋三观,都能直接套用这份导图模板。
这是一篇关于机械设计相关技能思维导图,很多机械专业学生、从业工程师在梳理学习与提升路线时,容易出现知识板块零散、不清楚完整能力框架、分不清设计 / 工艺 / 管控 / 自动化各模块关联、职业提升没有清晰路线等问题,这份成型思维导图整合机械岗位所需全部理论、技术、管理类内容,搭建一套完整闭环知识架构,一次性理清机械从业者需要掌握的全部专业能力。管理 / 经济包含工程法规、工业工程、工程经济;数学板块整合数理、力学、电工电子核心基础;计算机应用覆盖数控编程、CAM、机器人自动化;先进制造收纳智能加工、绿色设计、虚拟制造前沿技术;管理创新板块包含精益生产、敏捷制造、外贸招投标业务。材料模块划分金属、非金属、热处理相关知识;产品设计涵盖制图、结构设计、计算机辅助开发;质量控制包含质检体系、计量理化检测;制造工艺覆盖工艺规划、工装设备设计,各模块配套细分能力标注,贴合企业实际岗位需求。整套脑图兼顾在校学习、职场能力提升、企业新人培训多种用途,条理清晰,专业内容完整详实。
社区模板帮助中心,点此进入>>
这是一篇关于C与Cplus学习大纲思维导图,"从零玩转C/C 全栈开发!这份指南涵盖Linux系统编程到QT界面设计,助你快速进阶内容分为四大模块:C/C 基础(语法、数据结构、STL)、Linux实战(进程通信、高并发服务器、文件I/O)、QT开发(界面编程、自定义控件、跨平台项目),以及设计模式与UML应用包含贪吃蛇、电子词典等实战案例,详解线程同步、TCP/UDP等核心技术,适合入门到提高的全阶段学习。"
这是一篇关于关于婚姻的50件小事思维导图,完整覆盖婚前认知、夫妻相处、婆媳矛盾、女性独立、经济边界、亲子关系、情绪包容、原生家庭、亲密关系底线等全维度婚姻内容,每条分支独立对应一条婚恋感悟,逻辑清晰、观点分层直观。内容涵盖多重现实婚恋痛点:生育二胎规划、婆媳矛盾化解、婚姻融合而非单方面维系、女性经济独立的重要性、不盲目付出的婚恋底线、夫妻两代人分开居住的利弊、原生家庭对婚姻的影响、不要试图改变伴侣、浪漫与现实婚姻的平衡、忠诚与选择的边界、家务分工、三观契合的意义等大众高频关心的婚姻话题,精准戳中当代男女婚后相处、婚前择偶的各类困惑,将零散的情感观点整合为条理清晰的可视化框架。不管是备婚人群梳理婚前认知、规避婚后矛盾,已婚夫妻复盘相处问题、改善夫妻沟通,情感博主整理婚恋文案素材、制作情感科普内容,婚恋咨询师梳理教学讲义、给来访者做关系引导,普通女性记录自我成长感悟、理清婚恋三观,都能直接套用这份导图模板。
这是一篇关于机械设计相关技能思维导图,很多机械专业学生、从业工程师在梳理学习与提升路线时,容易出现知识板块零散、不清楚完整能力框架、分不清设计 / 工艺 / 管控 / 自动化各模块关联、职业提升没有清晰路线等问题,这份成型思维导图整合机械岗位所需全部理论、技术、管理类内容,搭建一套完整闭环知识架构,一次性理清机械从业者需要掌握的全部专业能力。管理 / 经济包含工程法规、工业工程、工程经济;数学板块整合数理、力学、电工电子核心基础;计算机应用覆盖数控编程、CAM、机器人自动化;先进制造收纳智能加工、绿色设计、虚拟制造前沿技术;管理创新板块包含精益生产、敏捷制造、外贸招投标业务。材料模块划分金属、非金属、热处理相关知识;产品设计涵盖制图、结构设计、计算机辅助开发;质量控制包含质检体系、计量理化检测;制造工艺覆盖工艺规划、工装设备设计,各模块配套细分能力标注,贴合企业实际岗位需求。整套脑图兼顾在校学习、职场能力提升、企业新人培训多种用途,条理清晰,专业内容完整详实。
C/C++
C/C++
数据结构
STL
STL模板
容器
迭代器
算法
BOOST标准模板库
正则表达式
关系式容器
map
set
multiset
multimap
序列式容器
vector
deque
list
算法
排序算法
排序
内部排序
插入排序
直接插入排序
基本思想:讲一个记录插入到已排序好的有序表中,从而得到一个新的,记录数增1的有序表。即:先将序列的第一个记录看成是一个有序的子序列,然后从第二个记录逐个进行插入,直到整个序列有序为止。 要点:设立哨兵,作为临时存储和判断数组边界之用。
希尔排序
基本思想:先将整个待排序的记录序列分割称为若干个子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。
选择排序
简单选择排序
基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第一个位置的数交换,然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,以此类推,直到第n-1个元素(倒数第二个)和第n个元素(最后一个数)比较为止
堆排序
堆排序是一种树形线则排序,是对直接选择排序的有效改进。
二元排序
简单选择排序,每趟循环只能确定一个元素排序后的定位。我们可以考虑改进为每趟循环确定的两个元素(当前趟最大和最小记录)的位置,从而减少排序所需的循环次数。改进后对n个数据进行排序,最多只需进行【n/2】趟循环即可。
交换排序
冒泡排序
在要排序的一组数中,对当前还未排好序的范围内的全部数。自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现他们的排序与排序要求相反时,就将他们互换。
快速排序
基本思想:1,选择一个基准元素,通常选择第一个元素或者最后一个元素 2,通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小,另一部分记录的元素值比基准值大。 3,此时基准元素在其排好序后的正确位置。 4,然后分别对这两部分记录用同样的方法进行排序,直到整个序列有序。
冒泡算法的改进
对冒泡排序的改进方法是加入--标志性变量exchange,用于标志某一趟排序过程中是否有数据交换,如果进行某一趟排序时并没有进行数据交换,则说明数据已经按要求排列好,可立即结束排序,避免不必要的比较过程。
归并排序
基本思想:归并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并成为整体有序序列。
基数排序(桶排序)
外部排序
寻路算法
深度寻路
广度寻路
A*寻路
树
二叉树
map和set
线性表
链式表
单链表
LIST
单链表 逆序
值:1(下标 0)
值:2(下标 1)
值:4(下标 3)
值:8(下标 7)
值:9(下标 8)
值:5(下标 4)
值:10(下标9)
值:3(下标2)
值:6(下标 5)
值:7(下标6)
双链表
双向循环链表
队列
栈
顺序表
数组
非线性结构
树
二叉树
完全二叉树
哈夫曼树
堆
图
图(图论术语)_百度百科 https://baike.baidu.com/item/%E5%9B%BE/13018767#9
哈希法
前端客户端开发
MFC
简介
四大机制
菜单
文档视图框架
对话框
基本控件初级
基本控件高级
库编程
多线程
socket
com组件
TCP
库程序
Acx控件
WIN32
5.11
Windows四大模块程序
1.控制台程序
DOS-显示或者运行的程序,入口main()
2.窗口程序
有自己的窗口 win32 MFC 入口WinMain();
3.动态库
后缀dll,不可以单独运行,直接注入到可执行程序中,入口函数DLLMain,不是必须
4.静态库
以lib为后缀的程序,只用来存储代码和数据,执行程序直接复制代码,没有入口函数
编译链接流程
编辑器
用来编写代码的软件,可记事本程序,或其他可编辑的软件
编译器
cl.exe把代码翻译成目标文件obj.(cl.exe源文件名)-产生obj.
链接器
link.exe-把obj文件和lib或dll文件链接成exe文件(link.exe obj的文件名 lib库名)运行:执行exe程序
资源编辑器
WINMain参数
hInstance 程序实例句柄 程序在内存中的首地址
nShow 显示方式
编码方式
1.从windowsNT开始,Windows完全使用Unicode来构建,所以核心函数(创建窗口,显示文本,字符串处理)都提供了Unicode版本
2.在Windows中,函数通常有两个版本,一个带W(wide)结尾和带A结尾(ASNI),MessageBoxA(……)MessageBoxW(…),通常情况,我们直接使用MessageBox就可以,如果是unicode编码方式会有一个Unicode的宏,会直接根据条件编译调用后缀是W版本的
3.Windows API函数(openFILE,winExec等)只兼容ANSI,不兼容Unicode编码,所以需要转换成Unicode,效率低下并且转换是有可能有bug,所以用Createprocess和createfile替换
4.ANSI中字符串处理,strlen(…)Unicode中字符串处理,wcslen(…)兼容版本字符串处理函数 _tcslen();
5.Unicode编码方式是两个字节代表一个字符,需要在字符串前加L,或者加_T(字符串),兼容版本 sieof(L"TANZHOU")=16;
6.运行安全检查,添加头文件strsafe.h,Scanf警告不安全,可能会操作一块不可以操作的内存,导致内存错误,所以微软重新提供_s的安全版本
7.修改Unicode编码方式:project-》configuration-》general-》project defaults-》character set
杂项
messagebox详解
HWND hWnd 窗口句柄
LPCSTR lpTt 中间显示字符串
LPCSTR lpCap 标题字符串
UINT uType 显示类型
API概念
application programming interface 应用程序接口 微软为了方便Windows的应用开发,提供给开发者的各种函数 这些函数就是Windows操作系统提供给应用程序的接口
SDK概念
软件开发包,包含了API 说明文档 辅助开发工具
头文件详解
Windows.h
包含常用的Windows的头文件,让开发者方便使用
winbase.h
内核API接口的封装 kenel32.dll
winuser.h
用户界面相关接口的API封装 user32.dll
socket
ws2_32.lib,涉及到网络编程socket的库文件
代码调试
GetLastError();
在watch窗口中选择一行,输入&err.hr后显示最后错误
使用断言(assert(真)),是异常的高级形式
使用outputdebugstring(“字符串”),输出窗口显示,设置options选项,force carriage returns 为选择状态
TRACE 宏,打印信息和outputdebugstring一样,MFC的
音乐媒体处理
playsound
是Windows用于播放音乐的API函数
参数 pszSound 函数由fdwSound制定
hmod 模块句柄
fdsSound 播放音乐标志
MSDN: https://msdn.microsoft.com/en-us/library/dd743680(VS.85).aspx.
百度百科: https://baike.baidu.com/item/PlaySound/5280948?fr=aladdin.
MCI接口
参考文献
MCI https://msdn.microsoft.com/en-us/library/windows/desktop/dd757151(v=vs.85).aspx
MCI Reference https://msdn.microsoft.com/en-us/library/windows/desktop/dd743458(v=vs.85).aspx
MCI Commands https://msdn.microsoft.com/en-us/library/windows/desktop/dd743372(v=vs.85).aspx
简述
即媒体控制接口,向基于Windows操作系统的应用程序提供了高层次的控制媒体设备接口的能力,使用MCI 播放音频文件 ,MCI为程序提供了两种方式访问MCI设变或文件,一种是消息接口函数,一种是字符串接口函数
消息接口函数方式
IDDevice用来表示一个MCI设备,MCI使用MCI_OPEN消息打开一个设备时自动创建一个标识号用以唯一标识要操作的设备,以后的消息操作均使用此标识
uMsg,表示要发出的小时,取值人如下所示
MCI_OPEN 打开一个设备
MCI_CLOSE 关闭一个设备
MCI_PLAY 播放全部或部分音频,从暂停状态恢复播放
MCI_STOP
MCI_PAUSE
MCI_SEEK
MCI_CUE 提示一个设备以最小的延迟开始播放或录制
MCI_RECODRD 在一个设备上开始录制
MCI_SAVE 保存一个文件
MCI_INFO 查询设备信息,如产品名称等
MCI_GETDEVCAPS 查询产品特征,如设备类型等
MCI_STATUS 查询设备当前状态 如播放位置 媒体格式等
MCI_SET 设置设备参数 如时间格式 波形数据格式等
fdwCommand 消息指定标志
dsParam 指定一个指向消息数据结构的指针
返回值 如果mciSendCommand函数调用成功则返回0,否则返回错误代码消息,所返回的DWORD 低位字是错误代码,可以将它发送到mciGetErrorString函数,已获得对错误的文件描述。若错误是设备特有的,高位保护了设备ID,否则高位为0
字符串接口函数方式
5.14
1.窗口创建步骤
1.定义程序入口
WinMain是一个函数,该函数的功能是被系统调用,作为一个32位应用程序的入口点。WinMain函数赢初始化应用程序,显示主窗口,进入一个消息接收-发送循环,这个循环是应用程序执行的其余部分的顶级控制结构
2.设计窗口类
typedef srtuct tagWNDCLASS { UINT style;//窗口类风格 WNDPROC lpfnWNDProc;//窗口过程函数指针 int cbClsExtra //窗口类附加数据缓冲区字节数 int cbWNDExtra;//窗口附件数据缓冲区字节数 HISTANCE hInstance;//当前应用程序实例句柄 HICON hIcon //窗口句柄 HCURSOR hCursor;//光标句柄 HBRUSH hbrBackgroun;//刷子句柄 LPCSTR lpszMenuName;//菜单资源名 LPCSTR lpszClassName;//窗口类名 }WNDCLASS,*PWNDCLASS,NEAR *NPWNDCLASS,FAR *LPWNDCLASS; 注意 WNDCLASSEX中多了一个UINT cbsize,//结构体字节数
3.注册窗口类
4.创建窗口
5.显示更新窗口
6.消息循环
7.返回
8.完整代码
2.回调函数
回调函数就是一个通过函数指针调用的函数,如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们说这就是回调函数,回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
定义一个回调函数
提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者
当特定的事件或条件发生时候,调用者使用函数指针调用调用回调函数对事件进行处理
例子:
消息处理结果:一个消息一定要有结果,一般是0(表示处理了)
3.基本概念汇总
1.句柄
在Windows应用程序中,窗口都是通过句柄进行标识的,当系统创建这些资源的时候会分配内存,并返回资源标志号-句柄
2.加载图标
HANDLE LoadImage{ HINSTANCE hinst; LPCTSTR lpszName; UINT uType; int cxDesired; int cyDesired; UINT fuLoad; } uType: IMAGE_BITMAP ; IMAGE_CURSON; IMAGE_ICON; fuLoad: LR_DEFAULTSIZE LR_DEFAULTCOLOR; LR_LOADFROMFILE;
3.得到&设置 窗口类信息
4.得到&设置 窗口信息
5.移动窗口
基础 窗口创建
消息循环
重要消息
菜单
GDI画图
基本控件
文件操作
控件
进程
进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。
线程
线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
socket
TCP
UDP
QT
概述
信号槽机制
布局管理
基本控件
标准对话框
主窗口
文件操作
键盘鼠标事件
多线程
网络编程
LINUX
linux系统编程
基本命令与常用运维
IO操作与文件系统原理剖析
进程控制和守护进程
进程间通信
Linux与Unix信号处理
线程控制原语和线程间同步
网络编程协议
socket套接字
shell编程
高并发服务器
linux数据库编程
语法基础
C++
C到C++
命名空间
是指标识符的可见范围或者有效范围
目的是为了防止出现名称冲突
类的常量成员
修改变量
修饰全局/局部变量
const int num1=10;
修饰指针变量
const int *p:常量指针 这里const 修饰的是int,而int定义的是一个整值,因此*p所指向的对象值不能通过*p来修改,但是可以重新给p来赋值,使其指向不同的对象,指针可修改初始化后所指向的对象的地址
const int *const p;
int * const p;指针常量 位于*右侧 修饰*
修饰引用
const int &r1=d1; int &const r2=d2;不能通过引用去修改变量 r1=2是错误的
修饰指针的引用
int *p3=&d1;const int * &r2=&d1;错误 因为const int*&和int *不匹配’ //不加const 的引用 可以用引用去修改变量值,加const的引用不能通过引用去修改变量值
修饰函数形参
类似修饰变量
修饰函数
修饰函数放在函数名后面
const修饰的函数不能修改类成员变量的值
不能调用非const函数
修饰返回值
放在函数前面
函数的返回类型是const的
头文件
主要功能是将原程序片段收集到一起,形成一个提供给编译程序的文件
面向对象
构造析构
返回引用
保证临时变量不被销毁
拷贝构造
深拷贝浅拷贝
运算符重载
派生和继承
虚函数/多态
IO流
异常
模板
类模板
类和对象
类是一种数据结构类型
对象是类的实例化
C11新标准
C
二进制
&按位与 同1则1,有0则0
| 按位或 有1则1 同0则0
^按位异或 相同为0 不同为1
0001 0010 0011 0010 0001 A=1.B=2; A=A+B;//A=3 B=A-B;//3-2 A=A-B//3-2 A=0001.B=0010; 0011 0010 0001 A=A^B;//A=3 B=A^B;// A=B^A// 0001 0011 0010
按位取反 0转换为1 1转换为0
左移运算 相当于*2的幂 最高位补0
右移运算 相当于除2的幂
基本数据类型
运算符
分支语句 switch
循环语句 for while
数组
函数
指针
1、 后缀++和--比*的优先级高,所以*P++与*(P++)等价。它自增P并返回P自增前所指向的变量数值。
前缀++和--与*的优先级相同,但是按从右向左结合。所以++*P与(*P)++等价。
2、对于char *p;
int a[10];
P = a;
不可以使用((int *)P)++。因为(int *)p只可以作右值。要达到目的可以用P = (char *)((int *)P + 1);
所以要注意,类型转换只可以做右值。
3、用指针调用函数的形式。
int func(){}
int (*fp)() = func;
既可以使用*fp(),也可以使用fp()调用函数func();
结构体
枚举联合
预处理
储存管理
文件操作
顺序表
链表
栈和队列
双向链表
C语言
入门
数据类型
流程控制
函数
指针
内存布局
结构体、共用体
文件操作
linux
操作系统介绍
linux目录和路径
linux文件权限
linux常用命令
Vim编辑器
webserver环境搭建
C项目电子词典
指针操作
文件读写
流程控制
提高
指针,二级
结构体、文件的使用
动态库封装和设计
函数指针回调函数
C语言面试题
C++入门
C到C++
C++关键字
命名空间
引用
C/C++混合编程
函数扩展
C++基础
面向对象编程思想
类的封装
构造和析构
静态成员
对象管理
友元函数和友元类
操作符重载
继承与多继承
多态
虚函数与抽象类
函数模板与类模板
输入输出流
异常处理
数据结构
算法基础
顺序存储
链式存储
循环链表
双向链表
栈(顺序&链式)
队列(顺序&链式)
二叉树
排序算法
C++进阶
STL
序列式容器
堆栈容器
双向链表容器
关联式容器
对组
STL算法详解
设计模式和UML
设计模式概念
面向对象设计原则
单例模式
工厂模式
UML应用
C++项目 贪吃蛇
常用数据结构之链表
C++类的使用
C++项目开发流程
QT
跨平台图形开发
QT框架介绍
父窗口和子窗口
信号和槽
坐标体系
对话框的使用
字符编码转换
常用布局
自定义控件实现
QT文件操作
QT界面编程项目案例
QT界面编程
QT文件操作
QT对话框
Linux
基本操作
基本命令
运维操作
文件I/O操作
文件系统剖析
系统编程
进程控制原理
进程间通信
Linux信号处理
进程间关系
守护进程
线程同步原理
线程间同步
网络编程
TCP UDP
Socket套接字原理
高并发服务器
异步I/O
libevent