- 博客(54)
- 收藏
- 关注
原创 const关键字用法总结
const 修饰普通变量const修饰指针变量const修饰普通函数的值传递参数、引用&指针传递参数、返回值const修饰类成员函数
2022-10-19 20:41:35 736
原创 2022年C++校招面经
1.c++内存四区2.const和define的区别(1)就起作用的阶段而言:#define是在编译的预处理阶段起作用(在预处理阶段进行替换),而const是在编译运行的时候起作用(const修饰的只读变量是在编译的时候确定其值)(2)就起作用的方式而言:#define只是简单的字符串替换,没有类型检查。而const有对应的类型,是要进行判断的,可以避免一些低级的错误(3)就存储方式而言:#define只是进行展开,有多少地方使用,就替换多少次。它定义的宏常量在内存中存若干个备份;const定义的只
2022-05-06 00:51:43 1208
原创 vector和Qvector初始化的两个常见错误
记录一下本人在练习QT中,遇到的关于Qvector未初始化,造成越界和卡出的问题。菜鸟一枚,如有错误,欢迎批评指正。未初始化大小,直接在指定位置赋值#include <iostream>#include<vector>using namespace std;int main(){ vector<int>a;//未初始化大小 a[10]=1; cout << a[1]; return 0;}会报错run: line 1
2021-12-30 22:21:53 6348
原创 牛客网选题
一 、保卫方案【未解决】JD6二、地下迷宫1,二维vector初始化有问题,程序有错2,回溯,除了方向还有体力值3,找到方案后,需要择优
2021-08-30 15:46:38 130
原创 2021-08-14
集线器、网桥、交换机、路由器、网关大解析集线器:工作在物理层,具有将接受的信号整型放大再发送的功能,同网卡、网线等传输介质一样,属于局域网中的设备,采用载波监听、碰撞检测访问方式(数据链路层?)网桥:使局域网段上各工作站之间局限在本网段内,可互连不同的局域网,mac地址记录和查找,可能产生网络风暴, 工作于数据链路层,扩展网络范围、提高利用率交换机:多接口网桥,自学习功能,找不到就泛洪路由器:连接逻辑上分开的网络(子网或单独的网络),具有寻址和路由的功能,路由表。工作在网络层。网
2021-08-14 10:38:01 125
原创 2021-08-12
五层协议计网总结七层协议各设备协议汇总应用层:为特定应用程序提供数据传输服务。数据单位为报文。运输层:提供的是进程间的通用数据传输服务。由于应用层协议很多,定义通用的运输层协议就可以支持不断增多的应用层协议。数据单位为用户数据报。网络层:为主机之间提供服务,而不是像运输层协议那样是为主机中的进程提供服务。网络层把运输层产生的报文段或者用户数据报封装成分组来进行传输。数据单位为ip数据报,分组交换的重要概念。数据链路层:网络层针对的还是主机之间,而主机之间可以有很多链路,链路层协议就是为相邻
2021-08-12 19:56:51 132
原创 2021-08-11
1.ip、子网掩码、网关各是什么IP 地址是一种32位逻辑地址,用来标识网络中一个个主机,IP 有唯一性(指的是公网地址),即每台机器的 IP 在全世界是唯一的。ip地址=网络号和主机号,同一网络号,不同主机号可以相互通信。子网掩码是用来判断任意两台计算机的 IP 地址是否属于同一子网络的根据两台计算机各自的 IP 地址与子网掩码进行 and 运算后,得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。2.给定两个ip地址和子网掩码,判断是否在同一网段两台计算机
2021-08-11 20:23:47 382
原创 leetcode
1,两数之和【哈希表】【unodered_map】实现记录了之前的结果,每次添加都和之前的比较一次class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int >hashmap; for(int i=0;i<nums.size();i++){ aut
2021-05-18 09:01:09 167
原创 高级数据结构-字典树-并查集-线段树
一,字典树1.指针数组2.路径存储,不是结点二,并查集图的深搜0.并查集概述并查集(Union Find),又称不相交集合(Disjiont Set),它应用于N个元素的集合求并与查询问题,在该应用场景中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。虽然该问题并不复杂,但面对极大的数据量时,普通的数据结构往往无法解决,并查集就是解决该种问题最为优秀的算法。1.数组实现并查集(查找与合并)2.森林
2021-05-13 14:52:42 391
原创 动态规划
找零钱1.状态转移【枚举所有和dp[i]有关的状态】2.更新最优解3.前一状态是否可以达到五,三角形1.二维dp2.从下往上,更少考虑边界,【反向思维】六,最长上升子序列方法一,1.两个状态i,思考和最大子段和的相似之处2.下标和个数差1【老问题了】3.动态规划边界方法二,1.用vector实现的栈2.二分查找优化,【index=-1】七,最小路径和1.处理一下边界,才能好递归2.与【五,三角形的相似之处】八,地牢游戏1.两个方向思考2.由左上到右下:因为有两个重要程
2021-05-11 22:11:45 211
原创 深度搜索DFS和广度搜索BFS
一,岛屿数量1.方向数组2.二维标记数组(记录是否到达过,不要走重复了)3.限制条件,没有到过,周围是陆地4.DFS和BFS两种方法二,词语阶梯1-最短转换步数1.理解为一张【图】2.图的宽度优先搜索-最短路径<顶点,步数>3.map构造邻接表,各点之间的连接,i和j错开一位三,词语阶梯2-最短转换路径1.记录路径的宽搜vector实现的队列保存所有的结点,pop结点时不会丢失对头元素在队列节点中增加该节点的前驱节点在队列中的下标信息,可通过该下标找到是队列中的哪个节点搜
2021-05-10 14:57:23 165
原创 哈希表与字符串
字符哈希哈希表排序整数拉链法解决冲突,使用头插法一,最长回文串1.用数组实现哈希:即下标为key,对应的值为value2.是否有中心点,及其计算,比较讨巧class Solution {public: int longestPalindrome(string s) { int char_map[128]={0}; int max_length=0; int flag=0;//是否有中心点 for(int i=0;i<
2021-05-07 21:54:23 496
原创 二分查找与二叉树排序
二分查找【递归】二分查找【循环】有回溯时候最好递归一,插入位置处理边界二分基本框架二,区间查找把求区间【拆解】成左右端点处理边界三,旋转数组查找两个接上?》首尾相连判断旋转区间边界情况情况很多很复杂四,二叉查找(排序)树中序遍历是从小到大的如何插入结点插入到二叉查找树中五,二叉查找数的编码和解码二叉查找树前序遍历与复原整形转为字符串六,逆序数(用归并做过)1.分治思想2.记录左子树数量二叉查找树3.将元素按照原数组逆置后的顺序插入到二叉查找树中,如何在元素插入时
2021-05-04 10:45:27 371
原创 二叉树-图
一,路径之和2LeetCode 113. Path Sum II a.二叉树的深度遍历b.二叉树的广度遍历c.先序-中序-后序遍历1.使用何种数据结构存储遍历路径上的节点?2.在树的前序遍历时做什么?后序遍历时做什么?3.如何判断一个节点为叶结点?当遍历到叶结点时应该做什么?/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left
2021-05-02 21:51:06 232
原创 递归-回溯-分治
求子集class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int> >result;//存储最终的结果,返回值 vector<int> item;//回溯时,产生各个子集的数组 result.push_back(item);//加入空集
2021-04-29 22:22:24 222
原创 贪心算法
一,钞票支付问题倍数关系二,分糖果1.贪心规律,学会贪心思考三,摇摆序列1.自动机状态状态改变时len++四,移除K个数字1.看数据规模,就是贪心算法2.运用栈存储结果或删除3.两层循环的复杂度?4.字符与整数相互转换5.各种特殊情况要考虑一下五,跳跃游戏-a1.无法直观的观察出从第0个位置开始依次向后的跳跃方式【该跳哪儿】2.该贪什么,怎么贪从第0个位置,应该跳至第1、第2、…、第i-1、第i个位置中的哪个?应该跳至第1、2、…、i-1、i位置中【又可向前跳至更最远位置】
2021-04-26 17:54:36 373
原创 栈,队列,堆
一,使用队列实现栈LeetCode 225. Implement Stack using Queu二,使用栈实现队列LeetCode 232. Implement Queue using Stacks 临时队列将元素逆序临时队列将元素逆序三,包含min函数的栈LeetCode 155. Min Stack 用最小值栈的栈顶记录了数据栈各个状态下的最小值四,合法的出栈序列 poj 1363 Rails五,简单的计算器LeetCode 224. Basic Calculato
2021-04-23 17:00:30 190
原创 链表
一,链表整体逆序思路:代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) :
2021-04-19 21:59:34 233
原创 QT-绘图机制
一,绘图的概述绘图系统基于【QPainter】,【QPainterDevice】和【QPaintEngine】三个类QPainter(画家) 使用QPaintEngine(绘图工具)在QPainterDevice(绘图设备)上画画。注意:如果在主窗口上绘画 必须在【绘图事件】(paintEvent)中完成画画.绘图【事件】 调用的时机窗口加载构造函数中实现update()3. 虚函数重写案例:窗口加载时调用调用QPainter的方法加载资源文件widget.h
2021-04-17 20:17:12 725
原创 QT-QTimer控件
3种定时器触发方式1.定时器事件触发【事件】-定时器事件是虚函数,重写定时器事件widget.h中声明定时器事件 //重写定时器事件 virtual void timerEvent(QTimerEvent * e);widget.cpp重写定时器事件定时器不唯一,定时器事件唯一【startTimer】每隔1000/2000ms触发一次定时器事件Widget::Widget(QWidget *parent) : QWidget(parent), ui(new
2021-04-17 19:16:10 450
原创 c++引用详解【重点】
一、什么是引用引用,顾名思义是某一个变量或对象的别名,对引用的操作与对其所绑定的变量或对象的操作完全等价语法:类型 &引用名=目标变量名;特别注意:&不是求地址运算符,而是起标志作用引用的类型必须和其所绑定的变量的类型相同1 #include<iostream>2 using namespace std;3 int main(){4 double a=10.3;5 int &b=a; //错误,引用的类型必须和其所绑定的
2021-04-16 21:58:12 232
原创 QT-事件
事件事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。Qt 程序需要在 main()函数创建一个 QApplication对象,然后调用它的 exec()函数。这个函数就是开始 Qt 的事件循环。在执行exec()函数之后,程序将进入事件循环来监听应用程序的事件。当事件发生时,Qt 将创建一个事件对象。Qt 中
2021-04-13 17:04:49 251
原创 QT-自定义部件
搭建 Qt 窗口界面的时候,在一个项目中很多窗口,或者是窗口中的某个模块会被经常性的重复使用。一般遇到这种情况我们都会将这个窗口或者模块拿出来做成一个【独立的窗口类】,以备以后重复使用。提升为先放入一个QWidget 控件例如:我们从 QWidget 派生出一个类 SmallWidget,实现了一个自定窗口,那么这个 SmallWidget 可以作为独立的窗口显示,也可以作为一个控件来使用:打开 Qt 的.ui 文件,因为 SmallWidget 是派生自 Qwidget 类,所以需要在 ui.
2021-04-12 21:59:22 247
原创 QT-布局-容器-控件
【找方法/信号,会正确传参/新建/初始化对象】【&】 用匿名对象传参【*】用new返回指针传参触发动作找信号,信号带参数,lamba保持参数一致找到所在类的方法/信号,没有就往上找容器布局动起来【找控件的信号】【看函数的返回值】 connect(ui->pushButton,&QPushButton::clicked,[=](){ //获取用户户名 QString user= ui->lineEdit->text(
2021-04-07 16:28:38 616
原创 QT-使用资源文件-UI文件的使用-对话框QDialog
使用资源文件添加资源文件先添加前缀,再添加文件,选择后编译,预览资源再次添加,右键“资源”,选择“open in editor”使用资源文件给菜单项加一个图标New是QAction类实例对象,void setIcon(const QIcon & icon),QIcon(const QPixmap & pixmap)QPixmap loadQIcon(pix)匿名对象传参 //创建图片控件 QPixmap pix; //:表示资源文件+图片在资源文件中
2021-04-06 16:46:39 827
原创 QT-菜单栏-工具栏-状态栏-铆接部件-中心部件
重在帮助手册的查询使用,明确在哪个类下查找需要的函数,以及使用的参数如何添加。this指定当前窗口为父对象, 在堆区创建名为menubar的【QMenuBar类】的控件,实例化一个对象QMenuBar*menuBar=new QMenuBar(this);将菜单栏添加到主窗口(this)中,【动作发起者是主窗口,所以找主窗口的函数】【学会找手册】【找MainWindow】this->setMenuBar(menuBar);在菜单栏中 添加 菜单【动作发起者是菜单栏】【QMenu
2021-04-04 16:42:10 268 1
原创 函数指针,指针函数,回调函数
函数指针本质是指针,指向函数的入口地址int 为返回值,*p作为整体代表指向该函数的指针函数指针的定义int (*p)(int,int);int(*p)(int a,int b);int(*P)();函数指针初始化,将max地址赋值给p,p此时就指向了max函数.函数指针变量=函数名int max(int a,int b){ return a>b?a:b;}p=max;函数指针的调用ret=p(10,12);ret=(*p)(10,12);ret=(
2021-04-04 10:57:15 249 1
原创 QT-信号与槽机制
connect(发起者,信号,接收者,槽函数)发起者发出信号,接收者执行槽函数发送者和接收者都需要是 QObject 的子类(当然,槽函数是全局函数、Lambda表达式等无需接收者的时候除外);信号和槽函数返回值是 void信号只需要声明,不需要实现槽函数需要声明也需要实现槽函数是普通的成员函数,作为成员函数,会受到 public、private、protected 的影响;使用 emit 在恰当的位置发送信号;任何成员函数、static 函数、全局函数和 L.
2021-04-03 22:06:47 510 2
原创 QT-对象树
在创建QObject对象时,可以提供一个其父对象,我们创建的这个QObject对象会自动添加 到其父对象的children()列表当父对象析构的时候,这个列表中的所有对象也会被析构。(注意,这里的父对象并不是继承意义上的父类!)我们也可以自己删除子对象,它们会自动从其父对象列表中删除建议:从堆区申请空间 而不是从栈区。QWidget window;QPushButton quit("Quit", &window);入栈顺序:window先 quit后 弹栈先调用quit的..
2021-04-03 21:12:33 105
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人