- 博客(19)
- 收藏
- 关注
原创 多态和强制类型转换探索
不bb,直接上代码static_cast不管向上转换和向下转换都能成功,向上转换:把子类指针赋值给基类指针,该基类指针调用的还是子类的函数,发生错误向下转换: 把基类指针赋值给子类对象,成功实现多态;但是有两种情况,如下:1. 基类指针本来就是指向子类对象,那么向下转换还能访问子类成员(如下面程序的变量a)2. 但是从指向基类对象的基类指针硬转,访问子类成员会发生错误#include<iostream>using namespace std;class Base{pub
2021-09-13 17:35:56 303
原创 实现一个函数根据输入x的值将链表分为前后两部分
题目:实现一个函数将一个链表分为前后两部分,小于x的放前面,大于x的放后面实现:声明两个链表,一个存放小的,一个存放大的;最后再将二者拼接ListNode* partition(ListNode *pHead, int x) { if (pHead == NULL || pHead->next == NULL) return pHead; ListNode* s = new ListNode(0); ListNode*s_head = s;//记录小于链表的虚拟头结点,用于返回 L
2021-07-02 11:28:40 465
原创 路由选择协议到Dijkstra算法
路由选择协议:内网关选择协议:RIP(routing information protocol)路由信息协议:达到直连的 网络的距离是 1, 非直连的网络,没经过一个路由器,则距离加1。——方法简单,最多只能有15个路由。而且没有考虑带宽,可能选了距离最短但是带宽也最小的路线。OSPF(open shortest path first)开放最短路径优先:Dijsstra的最短路径算法。外网选择协议:BGP重点说说OSPF中使用的最短路径算法:其实就是数据结构与算法里学的Dijstr
2021-06-30 16:33:24 1142
原创 面试经典问题--输入url后发生甚么事了?
从A的电脑接入网络开始讲:获取ip地址:DHCPA客户端的操作系统生成一个DHCP请求的UDP报文,在传输层添加UDP头部目的端口67,源端口68,在网络层添加目的ip地址255.255.255.255,源ip地址0.0.0.0。 在数据链路层增加以太网目的MAC地址:FF:FF:FF:FF:FF:FF;源Mac地址是A的Mac地址DHCP请求数据报被局域网中交换机转发,被DHCP服务器收到,可能有多个服务器,服务器提供ip报文,A客户端选择一个报文并验证后,向服务器发送请求报文的回应DHC
2021-06-30 16:19:37 94
原创 C++多态详解
面试官夺命连环CALL.C++三特性:继承,封装,多态。什么是多态?- 多态分为静态多态(编译阶段)和动态多态(运行阶段) - 静态多态:函数重载和泛型编程- 动态多态:虚函数 :根据绑定的类型调用响应的函数执行!动态多态依靠虚函数来实现:动态多态三要素:1. 父类有虚函数;2. 子类改写了虚函数;3. 通过父类的指针或引用来调用虚函数, 在运行时,绑定到不同的子类中,产生不同的行为什么是虚函数?虚函数是希望子类改写的函数,将其声明为虚函数我们声明了一个动物类animal,
2021-06-29 22:54:33 5845 2
原创 从内存来看类的继承
C++是面向对象的,那么存在继承关系时,下面四个问题,请作答!1. 那么父类对象可以赋值给派生类对象吗?2. 派生类对象能赋值给父类对象吗?3. 能用父类指针指向派生类对象吗?4. 能用派生类对象指向父类对象吗?实现如下继承:父类animal 和 子类 dog那么派生类dog对象的内存分布如下图继续回答上述问题:1. 那么父类对象可以赋值给派生类对象吗?不能,因为父类对象无法为派生类独有的成员赋值,导致赋值失败!!!2. 派生类对象能赋值给父类对象吗? 可以,因为派生类对象中有父类
2021-06-29 20:44:52 134
原创 程序猿面试之堆排序C++实现
程序猿面试之 堆排序 C++堆是一颗完全二叉树,分为大顶堆和小顶堆:大顶堆:每一个结点的值都大于其子节点小顶堆:每一个结点的值都小于其子节点堆排序分为两步:将数组 vec 变为大顶堆,此时头结点 vec[0] 就是最大值将头结点 vec[0] 和尾结点 vec[n-1] 交换,那么交换后,最大值就在尾部为vec[n-1];将vec[0], vec[1], …, vec[n-2];重新构造为大顶堆;即将除去最后一个元素(最大值)的数组重建为大顶堆。此时堆顶vec[0]即为剩下的的元素中的最大值
2021-06-29 14:29:49 161
原创 程序猿面试之 堆排序C++实现
程序猿面试之 堆排序 C++堆是一颗完全二叉树,分为大顶堆和小顶堆:大顶堆:每一个结点的值都大于其子节点小顶堆:每一个结点的值都小于其子节点堆排序分为两步:将数组 vec 变为大顶堆,此时头结点 vec[0] 就是最大值将头结点 vec[0] 和尾结点 vec[n-1] 交换,那么交换后,最大值就在尾部为vec[n-1];将vec[0], vec[1], …, vec[n-2];重新构造为大顶堆;即将除去最后一个元素(最大值)的数组重建为大顶堆。此时堆顶vec[0]即为剩下的的元素中的最大值
2021-06-29 14:26:17 205
原创 程序猿面试: 归并排序C++实现
归并排序 C++实现归并排序就是二叉树的后序遍历;先一直划分,直到数组中只有一个元素不能划分为止,并对各个子数组排序将两个排好序的数组组合起来void MergeSort(vector<int> &vec, int l, int r) { if(l >= r) return; int mid = l+(r-l)/2; MergeSort(vec, l, mid); //注意区间的划分 Merg
2021-06-29 14:10:29 145
原创 程序猿面试之 快速排序算法c++实现
快速排序 C++实现快排就是在数组中选一个元素,称为锚点,然后将数组分为两个部分:左边的值全部小于锚点值,右边的值全部大于锚点值。然后对左右两部分分别递归地使用步骤1,直到数组中只剩一个元素如果面试官问你快排: 可以这样回答:宏观上,快排就是一个二叉树的前序遍历,直接满分好吧!!!下面手撕快排!过程如下:如果要排序数组中下标位于[left,right]区间内的元素;那么指定两个指针i和j;使i=left, j = right;i从前往后遍历找到大于锚点的数,j从后往前遍历,找到小于锚点的数
2021-06-29 09:26:18 307
原创 OPENCV中访问像素at函数出错
出现如下图的断言错误,说明你的图片的类型和at时的类型不对如:我访问的图像是CV_64F的,而我的访问写的是src.at(row,col)发生错误。解决办法:将访问改写成src.at(row,col)Opencv中对应的类型如下:...
2021-06-22 09:49:44 780 1
原创 用宏来实现两数交换
TP面试让实现一个交换两数的宏,给我整懵了,回来查了资料实现如下:记录一下自己的成长,做一个笔记,能帮到有缘人是最好了!!!#include<iostream>#define SWAPVALUE(a,b) {(a)=(a)+(b);(b)=(a)-(b);(a) = (a)-(b);}int main() { int x = 1; int y = 2; int temp = 0; SWAPVALUE(x,y); std::cout<<
2021-06-09 15:27:23 1660 1
原创 C++ 基础之权限:Public,Private,Protected以及在继承时出现的问题
C++有三种权限public 公有private 私有protected 保护在类内使用在类内可以定义函数或成员的权限,class类内默认是private,struct类内默认是public。 但编程的时候最好显示指明函数或成员的权限,使得代码便于阅读和逻辑清晰,也是一个良好的编程习惯。在类的内部(定义类的部分),无论public,private,protected都能访问。在类的外部(定义类的代码之外),只能通过对象访问成员,并且对象只能访问public属性的成员,不能访问privat
2021-06-07 21:49:02 542
原创 配置Vscode+mingw64进行C/C++程序编写
vscode是一款轻量化简洁的文本编辑器,支持插件扩展,功能强大,是软件开发利器。现在网上好多VSCODE软件配置已经过时了,这两天把VSCODE得配置重新弄了一下,也是记录一下自己的成长,帮助大家更快更好的搭建自己的开发环境。vscode是一款文本编辑器,是用来写代码的,如果要进行代码编译还需要下载编译器MinGw-w64Vscode下载:Vscode下载mingw-win64下载:MinGw-win641. VSCODE安装VSCODE安装:下载好安装程序后,点击运行,出现下面界面,点击同意
2021-06-06 15:21:05 742
原创 C++单例设计模式
单例模式:只能实例化一个对象,但是这个对象可以在全局使用。实现方法:类自身保存自己的实例,提供访问该实例的方法。参考博客:C++程序员们,快来写最简洁的单例模式吧参考书籍《大话设计模式》...
2021-05-26 14:56:45 180
原创 三维软件学习
QT学习:自己瞎写,请勿参考是否打开十字:QCheckBox : clicked();输入角点信息:QLineEdit->text();输出误差:QLineEdit->setText(QString::number());将数字转换为QString类型,常用于UI显示改变界面:stackedWidget->setCurrentIndex(*);*可为0,1,2…显示矩阵:QListView,以列形式展示数据,可以用于显示数组。具体见下链接:https://blog.csdn.
2020-11-24 11:24:23 249
原创 使用CreateFileMapping来进行进程间的通信和使用信号量来进行同步操作——进程间实现图片传输
使用共享内存+信号量来进行进程间的通信,实现进程间的图片传输推荐使用opencv3.x版本,因为opencv4.x就不支持IplImage和Mat类型之间的转换,有两个进程:图片采集端和图片计算端下面一一讲解:一、图片采集端作用:采集图片和把图片写入共享内存/*使用vs+opencv3.x本程序是使用共享内存来进行进程间的通信,使用图片采集端(进程一)来采集图片并把图片写入共享内存里在...
2020-05-03 23:56:16 889
原创 使用命名管道实现进程间的通信——传递图片信息
使用命名管道实现进程间的通信——传递图片信息使用的环境vs+opencv3.4,建议使用opencv3.x版本,opencv4.x及以上就不支持图片IplImage和Mat对象的转换了,传递Mat对象,我也不太会(大家可以在评论互相学习)。本文还是传递的是IplImage结构的图片数据Pipe管道实际是贡献内存,可以实现进程间的通信,本博客是实现Windows下的通信,在管道中传递的是图片,程...
2020-05-03 23:12:57 1557
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人