- 博客(67)
- 收藏
- 关注
原创 软考知识点:二叉树的关键码序列 解析
题型:解析:首先要理解什么是二叉树?什么是有序二叉树?二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树。有序二叉树,就是左子树上的数值小于树根上的值,树根的值小于右子树的值。到这里理解清楚有序二叉树后就能快速的解决此类题目了。根据题目中的二叉树图可知,①根节点为23,因此就可以排除选项中不..
2020-09-15 16:03:28
24349
12
原创 实现LRU缓存机制(c++) 时间复杂度:O(1)
LRU是LeastRecentlyUsed的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的,是根据页面调入内存后的使用情况进行决策了。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU算法就是将最近最久未使用的页面予以淘汰。//LRU缓存机制(least recently used最近最少使用):一般采用链表+hashtable实现class LRUCache{public: LRUCache(int capac...
2020-08-25 14:29:01
594
原创 QT多线程:定时器QTimer和线程QThread常见报错问题
简单的测试demo:MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){ //按钮的创建以及槽函数连接 m_pStartBut = new QPushButton("start",this); m_pStartBut->setGeometry(0,0,100,50); m_pEndBut = new QPushButton("END",this); m_pEndBu
2020-08-24 15:55:45
8126
1
原创 Check if the given string is a valid string literal.
string checkString(string c){ int num = c.size(); if (num >= 2 && c.find_first_of("\"") == 0 && c.find_last_of("\"") == num - 1) { int count = 0; for (int i = 0; i < num; i++) { if (c.a...
2020-08-13 17:51:36
1142
2
原创 C/C++ 分隔字符串函数split(自定义)
代码如下:void spilt(char *srcStr, const char* sep, std::vector<std::string> &vecStr){ if (srcStr == nullptr) return; //①复制字符串 int len = strlen(srcStr); char *str = new char[len + 1]; strcpy_s(str, len + 1, srcStr); char *p = nullptr
2020-07-17 14:54:12
692
原创 GDAL开发:地理坐标与投影坐标的转换
最近运用到QGis的开发,通过gdal库(操作各种栅格地理数据格式的库)解析shp文件得到想要的地理数据,开发过程中,想得到某段道路的折线长度,网上找很多资料都没有类似的代码示例(主要是讲解地理坐标和投影坐标的定义,很清晰、易理解,但没有找到自己想要的示例代码)。开发环境:visual studio2013 (windows)gdal-2.3.1例:需要得到图中这段道路的长度(gdal开发)如图所示,gdal代码需要获取道路的长度921.130米OGRLineString *lin...
2020-06-30 12:39:57
3283
原创 gdal读取shp文件,输出中文乱码问题
最近要用到qgis开发,运用到gdal库(一个操作各种栅格地理数据格式的库),在输出shp文件时,中文出现乱码,借鉴网上很多办法都没有解决。开发环境:visual studio2013 (windows)乱码如下: 原因分析:shp文件读取时,图层的属性字段编码是utf-8的,windows下的string编码是gbk的,从shp读出来的utf-8的字符用gbk解码自然就乱码了。(如果在linux的环境下测试,就不会出现乱码)网址:http://www.mytju...
2020-06-16 17:56:34
3078
1
原创 解决PyCharm导入模块失败(No Module named pygame)思路
解决思路:1.通过python的pip安装pygame模块命令:pip install pygame另外1种方式:下载.whl文件进行安装(注意:版本一定要一样 要么都是64位,要么都是32位)可以在终端上进行验证是否安装成功期间可能出现WARNING: You are using pip version 20.0.2; however, version 20.1.1 is available.You should consider upgrading via the 'd:.
2020-06-04 14:33:14
9913
原创 Qt:基于 QGraphicsItem 绘制 箭头(用于两个图形项Item的连接)
熟练运用QGraphicsItem图形项,QGraphicsScene场景,QGraphicsView视图等类对于Qt开发绘图是必不可少的知识点。通常会需要一些箭头来展示流程图之类的,效果如下:arrowItem.hclass ArrowItem : public QGraphicsLineItem{public: enum { Type = UserType + 4...
2020-04-24 13:58:23
10278
9
原创 自己跟踪自己的类 (C++沉思录第27章)笔记
介绍:本文作为阅读书籍所做的笔记,方便于理解。知识摘取于《C++沉思录》书籍。c++的一个基本思想就是通过类定义可以明确指明当这个类的对象被构造、销毁、复制、复制时应该发生什么事情。这意味着设计得当的类可以为理解程序的动态行为提供一个强有力的工具。思考问题:如何使用Trace类去阐释类机制的本质?Trace类能够以怎样的方式提供有关函数执行和类操作的调试信息?主要思想:使程序在明显...
2020-04-05 23:11:35
191
原创 QVariant 与 QMap\QVector等容器的转换
例子://EnumClassType为枚举类型QVector<EnumClassType> vec;vec.push_back(EnumClassType::Event_Pause);ec.push_back(EnumClassType::Event_Pause);vec.push_back(EnumClassType::Event_Pause);qDebug()<...
2020-03-03 22:07:28
5628
原创 Qt自定义图形实现拖拽效果
在这里自定义图形是通过QPaintEvent事件绘画的图形,也可以通过自定义控件的方式添加到qt中。首先定义类来自定义图形,这里通过paintEvent事件来实现(主要就是绘画一个图形)void QEventView::paintEvent(QPaintEvent *event){ resize(115+m_iLen,36); QPainter painter(this...
2020-02-10 11:19:44
5073
9
原创 《C++编程剖析:问题、方案和设计准则》笔记: 分解std::string
本文为阅读《C++编程剖析:问题、方案和设计准则》所做的笔记。针对c++标准库中std::string来进行分析,主要分为4个模块来论述:一 、概观std::string1、问题:什么是单片式设计?为什么这种设计师糟糕的?(提出问题的原因是:std::string 就是单片式设计)指描述那些单个的、巨大的、不可分割的软件,就像一个巨大的顽石(代码笨重不可分割的性质)。例如:如果...
2020-02-05 10:57:49
272
转载 Qt编写自定义控件及插件的使用
Qt编写自定义控件及插件的使用 在使用Qt Designer设计窗体界面时,我们可以使用Widget Box里的窗体控件非常方便的绘制界面,比如拖进去一个按钮,一个文本编辑器等。虽然Qt Designer里的控件可以满足我们大部分的需求,但是有时候,也会产生一些特殊的需要,比如一个输入框,我们要输入的是经纬度,此时就会有两种输入方式,一种是小数形式,一种是度分秒的形式,此时只使用一个简...
2020-01-16 15:19:44
644
原创 解决CMake Error : file does not recognize sub-command GL0B or GL0B_RECURSE 原因分析
环境:cmake-3.3.2初学cmake,编写CMakeLists.txt时,运用收集文件命令file(GLOB <variable> [LIST_DIRECTORIES true|false] [RELATIVE <path>] [<globbing-expressions>...])file(GLOB_RECURSE <variable...
2019-12-25 12:08:35
5794
原创 Linux 下QT调用Python库文件 以及Linux 安装Python3.8开发环境 问题
最近想运用linux系统下Qt来实现c++与python的混合编程,linux系统会自带python2.7版本或者python3.5版本(深度linux)。Qt调用python文件需要在pro文件中添加lib和include ,路径如下:include和lib文件路径在linux系统下一直找不到,①include可以通过终端输入命令:sudo apt-get inst...
2019-12-12 11:39:44
1902
原创 常见的排序算法
1.冒泡排序原理:①比较相邻的元素。如果第一个比第二个大,就交换他们两个。②对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。③针对所有的元素重复以上的步骤,除了最后一个。④持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。平均时间复杂度为:代码如下://简单理解:重复“从序列右边开始比较相邻...
2019-12-04 11:41:09
212
原创 思考:如何设计好一个类?
c++程序员应该如何设计好一个类?如何去思考?怎样才能作为一个优秀的类设计者?一个优秀的类设计者都有一个核查表,它并不是任务清单。其作用是帮助你回忆起可能会忘记的事情,而不是来约束你。下面就是设计类时我们应该想到的问题(重在思考,而不是按部就班):1.你的类需要一个构造函数吗?过于简单的类可能并不需要构造函数,它们的结构就是接口,所以并不需要构造函数。当我们需要隐藏类的内部工作方式...
2019-10-14 22:48:33
1848
原创 思考:为什么C++没有(所使用的编程环境的某种功能)?
编程c++程序时,常会思考:为什么最爱使用的编程环境没有想要的某种功能?因为系统中的c++是否具备某种功能,得看系统有没有为它提供这样的环境,这种功能不是编程语言本身的一部分。C++是一门编程语言,其本身并不是一种编程环境。下面是看书籍《c++沉思录》所总结的c++特性:①c++具有可移植性和可并存性;②c++没有对复杂操作系统的依赖性,譬如不需要对垃圾收集机制或者支持交互执行等功能的...
2019-10-13 21:40:34
317
原创 简单的五子棋小游戏(Qt实现)
c++代码简单实现五子棋功能,主要是分为窗口绘图的显示,横、纵、斜三个方面计算的功能代码实现,即能连续出现5个相同棋子就为赢。在这里就简单讲解一下这三个方面的功能实现(主要是通过QT实现)。下图为游戏主窗口页面:第一步:窗口绘图的实现(QPaintEvent绘图事件和 QMouseEvent鼠标事件)①鼠标事件(这里我的是mouseDoubleClickEvent()双击事件)...
2019-09-08 15:12:49
4406
19
原创 深入了解C++为什么建议使用const/enum/inline替换#define
相信大家在使用c++编程中都会有这样的疑惑,为什么c++建议使用const/enum/inline替换#define呢?可以这样来理解:使用编译器来替换预处理器。问题就在于因为#define不被视为语言的一部分。1.那么什么时候使用const替换宏呢?比如:#define PI 3.1415宏定义名称PI有两种可能性:也许从未被编译器看见,也许在编译器开始处理源码之前它就被预...
2019-07-20 22:20:11
745
原创 main()函数执行前,做了什么?
最近阅读了一本书《高级C/C++编程技术》,发现都是非常有用的知识,对于初学者提升能力是非常有帮助的,更容易理解编译过程,这儿讲解一下main函数执行之前做了哪些准备。main()函数之前,会先执行一些函数,这些函数有什么作用呢?既然在main()函数之前执行,那肯定是对程序的运行做准备。这个应该都能想到。这儿用两个函数作简单讲解:①_start()函数:主要目的是为接下来调用的_...
2019-07-08 21:44:16
1302
原创 Qt窗体之间相互传递值的三种方式
才学习QT编程时,按公司需求编写上位机时,遇到传值的问题,所总结的三种方式。希望能帮到一些初学者。方式1:使用QT中的signal & slot机制进行传值(槽函数机制)一个窗口用来接收传递过来的值connect();另一个窗口发送信号signal();方式2:使用public形式的函数接口进行传值(继承)使用pubic函数接口的形式,要先确定是从父窗口向子窗口传值还是相反...
2019-06-24 22:46:33
3943
转载 C++定时器功能实现
最近编写代码过程中,需要用到一个定时器的功能,我们知道c++只提供了一个头文件#include <ctime>,并没有提供定时器功能函数,所以需要自己编写一个定时器功能的函数,Qt中可以通过信号与槽机制实现定时器功能,我们可以模仿类似的功能来实现。方法一:使用计时器clock函数来实现循环 ①头文件 以及main()#include <iostream>#...
2019-06-20 21:15:28
33339
12
原创 C++继承派生类构造函数的写法
C++有三大思想:抽象与封装、继承与派生、多态性,是c++开发人员面对对象编程必须掌握的知识。初学者对子类继承中构造函数的写法有时会存在一些问题。即子类继承基类时,子类的构造函数如何实现呢?如何调用基类的成员变量?相信大部分初学c++时,都会遇到类似的问题。我们都知道继承中,当子类建立一个对象时,执行构造函数的顺序是:①派生类构造函数先调用基类的构造函数②再执行派生类构造函数本身(...
2019-06-16 22:51:01
4270
原创 Qt编程 segmentation fault (段错误)解决思路
下面错误显示应该是很多程序员编程时都会遇见类似的问题吧。程序执行过程中,就异常退出显示如下类似的代码:pure virtual method calledterminate called without an active exception相信很多初学者绞尽脑汁都找不出代码问题的所在处,要么百度、要么寻求大佬帮助。遇到此问题时,一定不要慌 ,要冷静,仔细的去检查代码。代码是自己编写的...
2019-05-07 21:21:28
20691
7
原创 信号与槽函数机制的三种体现
首先先了解一下什么是信号和槽函数机制?信号和槽函数是QT的核心机制,要精通QT编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其他工具包的重要地方。信号和槽是 QT 自行定义的一种通信机制,它独立于标准的 C/C++ 语言,因此要正确的处理信号和槽,必须借助一个称为 moc(Meta Object Compiler)的 QT 工具,...
2019-05-06 22:07:20
1181
OpenCV 如何处理白色车身反光问题?
2022-08-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅