C++
C++学习笔记
'"<>{{7*7}}
这个作者很懒,什么都没留下…
展开
-
QT学习笔记Day04:菜单栏、工具栏、状态栏、图像显示
QMainWindow:0x00 菜单栏:主要用于QMainWindow,QWidget,QDialog也可用QMenuBar 菜单栏,不可缺少QMenu 菜单,文本显示,不处理菜单操作QAction 用来执行菜单动作效果:代码:#include "mainwindow.h"#include "ui_mainwindow.h"#include <QMessageBox>MainWindow::MainWindow(QWidget *parent)..原创 2020-12-23 21:11:20 · 501 阅读 · 0 评论 -
QT学习笔记Day03 文件对话框、颜色对话框、字体对话框、消息对话框、自定义消息对话框、进度条对话框、QToolBox
0x01 文件对话框效果:主要代码://选择文件对话框 //父窗口,标题,从哪个目录开始选文件,设定可以选择的文件 //返回值:选择的文件的绝对路径 QString fileName = QFileDialog::getOpenFileName(this,"选择一个文件","/Users/mac","c++ file (*.cpp);;c file (*.c);;head file(*.h);;all file (*.*)");//另存为文件对话框QStr原创 2020-12-20 19:21:06 · 473 阅读 · 0 评论 -
QT学习笔记Day02:QT的布局原理
qt原创 2020-12-19 21:35:29 · 365 阅读 · 0 评论 -
Qt学习笔记Day01:Qt入门
0x00 Qt的组成1.Qt编译器 编译C C++代码 集成了gcc g++2.Qt creator 集成编辑器3.资源编译器 rcc4.UI编译器 UIC一个简单的Qt程序Qt Widgets Application 基于窗口的应用程序Qt Console Application 控制台应用程序.pro项目文件,用来规定当前项目的类型、使用什么库、包含的源文件、包含的头文件、搜索目录,一旦.pro文件修改了,就需要重新执行qmake(qmake用来生成makefile文件)原创 2020-12-17 20:26:36 · 367 阅读 · 0 评论 -
win32网络编程(学习笔记):多客户端简单聊天室,实现简易FTP,UDP套接字编程、TCP的11状态
0x00 多客户端简单聊天室思路:主线程循环不断接受客户端连接:创建一个全局数组来保存每次连接主套接字产生的从套接字(为什么要全局数组,为了线程之间通信) 循环调用accept函数接受客户端的连接每个客户端连接上成功后,创建一个线程来负责和这个客户端通信客户端发送给服务器的数据,服务器接受后需要转发给当前连接上服务器的所有客户端客户端需要有两个线程:一个线程循环不断接受用户输入,并发送给服务器 另一个线程循环不断接受服务器发来的数据并显示代码:服务器代码:// Se原创 2020-12-15 16:24:05 · 626 阅读 · 0 评论 -
win32网络编程(学习笔记):简单的TCP 客户端、TCP服务端
0x01 网络编程的基础1.网络架构:五层网络架构应用层:应用程序传输层:四层交换机 光猫网络层:路由器 三层交换机数据链路层:网桥(淘汰)二层交换机 网卡(一半是物理层)物理层:中继器 集线器七层网络架构:应用层 功能:文件传输 email ftp文件服务器,虚拟终端 协议:ftp tftp http smtp telnet 表示层 功能:数据格...原创 2020-12-14 20:09:44 · 994 阅读 · 0 评论 -
LinuxDay01 文件&进程基础
0x01 文件1.文件的基本操作1.1文件描述符号C中对应文件的是 文件指针C++中对应文件的是文件流对象windows 中对应文件的是 文件句柄Linux 文件描述符号(一个整数) 对应 文件标准输入输出设备 在linux上也是文件,他们的文件描述符号分别为0,1,2标准输入设备:0标准输出设备:1标准错误输出设备:2Linux上打开任何一个文件,都会得到一个文件描述符号,如果成功打开,则文件描述符号为正数如果打开失败,则为负数1.2文件操作的函数o原创 2020-12-14 00:57:50 · 261 阅读 · 0 评论 -
CPPDay09 异常&C++11标准
异常:程序员写代码的时候预料道有可能出问题,但没有办法避免。异常处理:C的异常处理:全部依赖函数返回值 C++异常处理方式:C++完全兼容C的异常处理方式,但是它还多出来一些异常处理方式C++的异常处理关键字:try catch(try和catch搭配使用) throw抛(可以单独去用)try{//包含一段代码 }catch()//抓取try包含代码段中抛出的异常...原创 2020-07-02 12:37:09 · 164 阅读 · 0 评论 -
codeup 1918 简单计算器
思路和坑:step1.中缀表达式变后缀表达式(栈)解决两个问题,如何处理 数字, 如何处理 操作符。1.数字直接进入后缀表达式,但是有坑!字符类型的数字在中缀中是可以区分清楚的,例如12+13但是变成后缀1213+,那么字符类型就搞不定了。所以中缀表达式中的元素类型必须为自定义node类型2.操作符入栈,因为后缀表达式,优先级高的操作符一定在前面,所以,入栈前,需要将比该操作符高的...原创 2019-12-09 11:02:38 · 101 阅读 · 0 评论 -
CPPDay23 哈希
目录0x00 哈希的组成:0x01 哈希表的增删改查0x02 三重哈希表0x00 哈希的组成:确定数据范围 合适的查找hash函数:根据数据 返回数据所在内存段首地址 解决冲突的方式0x01 哈希表的增删改查要求:用哈希表存储一些两位数示意图:首先,我们应该准备一个链表节点类型node 和一个 hash类,hash类中只需要一个成员变量,那就是数组的首地址...原创 2019-10-04 18:08:28 · 230 阅读 · 0 评论 -
CDay22 图(图的初始化(二维数组进阶),图的遍历:广度遍历和深度遍历)
目录0x00 图的相关概念0x01 图——类的创建:0x02图的初始化的思路:(邻接矩阵版)1.那么如何开一个二维数组呢?2.如何将用户输入的边对应到二维数组中存储起来?执行结果:0x03图的初始化的思路:(邻接表版)执行结果:0x03图的遍历:0x00 图的相关概念顶点:用来保存数据。边:用来描述数据之间的关联。图的描述方式:临接矩阵:...原创 2019-10-03 14:45:37 · 808 阅读 · 0 评论 -
CPPDay21 STL:map、set 和平衡二叉树
目录0x00 map0x02 multimap0x03set数据结构与算法学习中遇到一些逻辑上的问题没有解决,不要认为这些问题是永远搞不定的,所谓的逻辑思维是可以通过多次地锻炼,多次地写代码去训练出来的,凭空产生一种思路是不可能的。但是如果能够自己去写一些代码,自己去实现一些数据结构 和算法,一开始就用老师的思路,或者书本上的思路,自己能够尝试把代码写出来,再自己尝试着改一改这个...原创 2019-10-01 17:36:20 · 932 阅读 · 0 评论 -
CPPDay20 A星寻路算法
目录0x00 A星寻路算法的思路:0x01那么如何计算推测代价呢?0x02 代码版本一0x03代码版本2A星寻路算法是狄克斯特拉算法的优化。0x00 A星寻路算法的思路:广度寻路算法中,我们假设小人只能走上下左右四个方位。但是在A*寻路算法中,我们假设小人可以走如上图所示的八个方位。即小人可以走斜线,并且我们规定,走直线上下左右的代价为10,走斜线的代价为14。...原创 2019-09-23 13:13:49 · 407 阅读 · 0 评论 -
CPPDay19:深入浅出广度寻路算法
目录0x00 存储实际地图:0x01 广度寻路算法的思路:0x02比较深度寻路与广度寻路:0x03 代码:深度寻路算法:先深挖再拓宽广度寻路算法:先拓宽从离散数学的角度来看,该图中每一个点都是一个四叉树。因为每个点都有4个方向可以走。所以图中每个点的存储结构使用四叉树。0x00 存储实际地图:和深度寻路算法的思路一样,首先我们需要将实际地图用一个二维数组...原创 2019-09-21 15:15:28 · 302 阅读 · 0 评论 -
CPPDay18:深度寻路算法的思路与实现
目录0x00:寻路算法分类:0x01:深度寻路算法的局限性0x02 设计实际地图:0x03 深度寻路算法思路:0x04 设计辅助地图0x05 寻路0x06 准备栈0x07命令行版本的动画显示:0x08 图形界面版本:0x00:寻路算法分类:深度寻路算法 广度寻路算法 A星寻路算法0x01:深度寻路算法的局限性只能应用于二维地图,并且只能走直线。...原创 2019-09-19 08:57:26 · 295 阅读 · 0 评论 -
算法与数据结构作业03:双链表的增删查改、设置头结点的具体好处分析、循环双链表的增删查改
双链表的增删查改实现思路基本与单链表相同。就再赘述了,这里分析下设置一个头结点的具体好处:设置了头结点之后,不论是遍历整个链表,还是找链表中的最后一个节点,还是找数据对应的节点。总之,凡是涉及到需要从头沿着链表执行的操作都因头结点的设置被统一了。如果没有头结点,这些操作都需要判断interface是不是指向空。例如,你刚创建了一个新链表,想要遍历这个链表的时候,如果没有头节点,inter...原创 2019-09-13 10:22:46 · 175 阅读 · 0 评论 -
C++ 内存泄漏以及delete 和 delete []的真正区别
c++中对new申请的内存的释放方式有delete和delete[两种方式,到底这两者有什么区别呢?1.我们通常从教科书上看到这样的说明:delete 释放new分配的单个对象指针指向的内存delete[] 释放new分配的对象数组指针指向的内存那么,按照教科书的理解,我们看下下面的代码:int *a = new int[10];delete a; //方式1del...转载 2019-09-13 09:44:08 · 1496 阅读 · 0 评论 -
CPPDAY01 字符集,函数的缺省参数,函数重载,C++中的结构体,bool类型,string类型,输入输出,动态内存分配,引用类型
目录0X01文字与字符集:0x02函数:1.函数的缺省参数:2.函数重载0x03C++中使用结构体:0x04 C++中有bool类型:0x05 C++中输入输出不一样0x06 C++中有字符串类:string类0x07 C++中动态内存分配不一样 0x08 C++中有引用类型C++ == C + 面向对象 + 标准库C语言标准库:std...原创 2019-01-27 22:25:19 · 367 阅读 · 0 评论 -
CPPDay02 区分C++中struct 和class,名字空间,C++开发展望,构造函数,用指针绕过封装
目录0x00.区别C++中的struct 和class0x01.名字空间:0x02C++开发展望:0x03构造函数构造函数:构造函数特性: 构造函数能不能被重载: 构造函数被调用多少次:面向对象: 结构体:管理多个不同类型数据的数据结构C++支持面向对象: 面向过程: 函数 面向对象: 数据 事 物 : 对象抽象...原创 2019-02-12 19:49:13 · 300 阅读 · 0 评论 -
CPPDay011 STL概述(STL,容器,序列式容器(vector,list,deque)关系式容器(map,set,mulitmap,multiset)迭代器)
0x00STL:Standard Template Library 标准模板库,由两大部分组成,一部分称之为容器,另一部分称之为算法,它是C++语言自带的,别人已经写好,我们只要去用就ok了。0x01容器:我们需要用数据结构来管理数据,如果这个数据结构比较健壮一点,我们就将它称之为容器。包括:变量,数组,结构体,链表,顺序表,栈,队列等等对于学习者而言,首先要知道如何去用STL,然...原创 2019-02-23 22:58:46 · 238 阅读 · 0 评论 -
CPPDay012高级排序算法
除vector之外的容器:1.list:双向动态链表(循环双链表)单链表,前一节点的next指针指向下一个节点。双链表:每一个节点有两个指针,一个指针指向下一个节点,另一个指针指向前一个节点。循环双链表:最后一个节点next指针指向第一个节点,第一个节点的pret指针指向最后一个节点。自学如何使用有了数组之后,为什么还要有链表?数组和链表各有什么优势与劣势。数组和链表的区别...原创 2019-02-26 20:06:17 · 153 阅读 · 0 评论 -
CPP[数据结构和算法]Day014 树,每个节点3个指针实现无序N叉树的增删改查,strcpy,memcpy,memset
目录0x00 基本概念:0x01 每个节点3个指针实现无序N叉树的增删改查0x03 附加:strcpy、memcpy和memset之间的区别0x00 基本概念:树结构应用广泛,上到应用程序(例如文件系统),下到底层,调度进程,线程,管理硬件都要用到树这种结构。多棵树在一起,且相互有关联,称之为森林树:一个根, 多个分叉 森林:多颗类似的树 节点:树里面每一个元素...原创 2019-03-02 22:59:13 · 292 阅读 · 0 评论 -
CPPDay13:分治思想(归并排序、二分查找(循环,递归))
目录0x00 归并排序0x01 二分查找使用循环的思路:二分查找的C语言实现:python实现二分查找:使用递归的思路:什么叫分治思想?所谓分治思想,就是将一个大问题,转化为几个同一类型的小问题,即将大问题分而治之,小问题解决了,大问题便解决了。0x00 归并排序例如将数组中完全无序的数字排序 这个大问题 就可以分治成:将数组的右半部分(完全无序)排序 &g...原创 2019-08-26 16:54:31 · 546 阅读 · 0 评论 -
CPPDay08 模板(函数模板,模板函数,类模板,模板类)+如何用模板来写一个自己的栈(顺序栈,链式栈)
目录0x00模板:为了提升开发效率0x01用类模板来写一个自己的栈:1.顺序栈:2.链式栈0x00模板:为了提升开发效率#include <iostream>using namespace std;//函数模板template<typename T>//泛型可以对应任意类型 ,typename换成class也可以,不建议class和typen...原创 2019-01-24 17:01:17 · 250 阅读 · 0 评论 -
CPPDay04运算符重载(友缘,友元)
目录1.为什么要重载运算符:2.运算符的本质:函数3.如何重载运算符4.友缘,友元5.输出运算符重载6. 一般运算符重载的规范:7. 哪些运算符不能重载8.运算符重载分类9.运算符重载需知:1.为什么要重载运算符:我们希望自己抽象出来的类也可以使用运算符去操作。2.运算符的本质:函数3.如何重载运算符 函数名...原创 2019-01-27 22:18:14 · 335 阅读 · 0 评论 -
CPPDay05 C的静态成员,类的静态成员,单例模式,静态成员函数,继承(面向对象三大特性,高类聚,低耦合),继承方式(private,protected,public)多重复杂继承,虚继承
目录0x00 C中的静态成员:0x01类的静态成员:0x02单例模式:0x03静态成员函数:0x04继承:0x05继承方式:0x06多重复杂继承:0x07虚继承:0x00 C中的静态成员:static:1.函数结束,静态变量不会被销毁。2.限制标识符作用域不能被扩展3.静态成员只能被初始化一次。0x01类的静态成员:不能使用自动传参列...原创 2019-01-31 00:06:42 · 317 阅读 · 0 评论 -
CPP内部类
目录0x00 介绍0x01内部类的使用0x00 介绍1.把一个类定义在另一个类的内部,称里面的类为内部类。例如:class A{public: class B { public: int x; int y; };};类B即为内部类。2.内部类和外部类相互没有特权,即外部类无法自由访问内部类,内部类也无法自由访问外部类。a.他们不是朋友关系...原创 2019-09-01 12:48:21 · 595 阅读 · 0 评论 -
CPP[算法与数据结构]Day015 有序二叉树的增删改查,先序遍历,中序遍历,后序遍历
目录0x00 二叉树0x01 有序二叉树:0x02补充:二叉树的遍历:0X03升(降)序二叉树的增删改查0x00 二叉树二叉树:每个节点有且只有两个孩子(设计数据结构的时候,每个节点只设计两个指针:左节点和右节点)二叉树中的叶子节点:两个孩子都为NULL的节点。0x01 有序二叉树:升序二叉树:左节点 < 根节点 < 右节点,更准确的说,升序二...原创 2019-09-02 17:47:02 · 314 阅读 · 0 评论 -
CPPDay016[算法与数据结构] 数组实现完全二叉树
目录0x00 先序,后序,中序遍历的相互推导:0x01满二叉树:1.定义:2.特性:0x02完全二叉树:1.定义:2.特性:0x03 完全二叉树的增删查改0x00 先序,后序,中序遍历的相互推导:已知先序和中序可以推导出后序,已知中序和后序可以推导出先序,但是已知先序和后序却推导不出中序。例如:有一颗树如下: 先序遍历:ABDEGCFH中序遍历...原创 2019-09-06 13:44:46 · 503 阅读 · 0 评论 -
CPPDay017[算法与数据结构] 堆的创建,堆排序
目录0x00 什么是堆?0x02 堆的创建:0x00 什么是堆?堆 是有序的完全二叉树。注意这里的有序指的是层之间有序。最小堆(小顶堆):根节点值最小。最大堆(大顶堆):根节点值最大。小顶堆的特性:孩子比父大。0x02 堆的创建:思路:首先,将数据直接存入到完全二叉树中。然后调整数据的顺序,让完全二叉树成为一个小顶堆。调整数据顺序的方法:类似于冒...原创 2019-09-07 10:20:35 · 213 阅读 · 0 评论 -
算法与数据结构作业03:静态链表增删改查(C++实现)头结点的优点
目录0x00 为什么需要有静态链表?0x01 静态链表的节点类型 以及 链表类型的实现0x02静态链表的增0x03删:0x04改:0x05代码:0x06运行结果:0x00 为什么需要有静态链表?链表是一种插入删除效率O(1)高于数组O(n),但是查找、遍历效率低于数组的数据结构。在C++中我们实现链表中节点类型,通常会用指针类型来描述该节点指向哪一个节点(即pN...原创 2019-09-12 22:18:31 · 489 阅读 · 0 评论 -
CPPDay03 构造函数,析构函数,内联函数,拷贝构造函数,深拷贝与浅拷贝,重写string类
目录0x00. 构造函数:0x01. 构造函数有如下要求:0x02.构造函数的自动传参列表:0x03.析构函数:0x04.析构函数的格式: 0x05内联函数:0x06 拷贝构造函数:0x08深拷贝与浅拷贝:0x00. 构造函数:对象出生时操作系统就会自动调用,用于初始化对象。0x01. 构造函数有如下要求: 1.函数名必须和类名相同...原创 2019-02-16 19:13:12 · 270 阅读 · 0 评论