![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 79
Billy12138
i am billy
展开
-
QBreakPad使用流程-段错误在动态库中
有时候遇到段错误定位到动态库中,却无法看到定位到库中哪一行原创 2022-07-16 17:55:57 · 578 阅读 · 2 评论 -
<随笔>-C++保留字段
保留字段指的不是网上好多博客写的关键字,保留字之类的东西,其作用是提高程序的兼容性,使用场景是相互之间使用结构体传递数据,但是该结构体随着软件的发展会增加某些字段,这时候如果直接改结构体就会造成一些不必要的麻烦,假如两个人是使用网络通信去传递结构体,新增了字段之后接收方还是按照旧的大小去读取就会出问题.举个例子:某结构体:typedef struct { int a; int b;}stNode;两者之间都是按照二进制传递解析的,发送端不断发送该结构体给接收端,接受端按照s原创 2020-11-06 15:03:28 · 768 阅读 · 1 评论 -
QT-信号槽中传递自定义数据类型
Qt编程一个核心亮点就是信号槽机制,通过:QMetaObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type=Qt::AutoConnection)原创 2020-09-30 10:35:58 · 1994 阅读 · 0 评论 -
C++常用库
原以为,C++相比较别的语言可用的成熟库太少,后来发现还是自己太年轻,找到一份大佬总结的资料,特此备注,以便以后取用,C++的路还很长我才迈出了第一步C++常用库转载 2020-08-29 17:36:35 · 315 阅读 · 1 评论 -
Qt软件打包发布
打包脚本:#!/bin/bashexe="可执行文件名"des="自动打包依赖库的路径,会将依赖库自动拷贝到该目录下"deplist=$(ldd $exe | awk '{if (match($3,"/")}{printf("%s "),$3}}')cp $deplist $des执行脚本:#!/bin/bashexport LD_LIBRARY_PATH=./lib:$PATH//环境变量./Soft //可执行文件名...原创 2020-07-10 17:44:58 · 178 阅读 · 0 评论 -
Qt视图模型框架
在此收藏一篇讲的特别清晰的讲QT视图模型框架的博客,备份网址,以防丢失https://blog.csdn.net/qq_29344757/article/details/78054456转载 2020-07-02 14:38:13 · 1846 阅读 · 0 评论 -
Qt视图模型框架初识(MVC)
声明:本文章只是为了自己学习写的笔记,如需了解具体代码示例或者详细内容请参考<<QtCreator快速入门>>第十六章一.首先来了解一下MVC(Model-View-Controller模型-视图-控制)设计模式MVC是一种起源于Smalltalk的设计模式,经常用于创建用户界面,模型(Model)是应用对象用于表示数据;视图是(View)是模型的用户界面,用来显示数据;控制(Controller)定义了用户界面对用户输入的反应方式,在MVC之前都是将这三种组件集成在一起,M原创 2020-06-30 10:08:05 · 1041 阅读 · 0 评论 -
c++调用python系列: 结构体作为入参及返回结构体
最近在打算用python作测试用例以便对游戏服务器进行功能测试以及压力测试;因为服务器是用c++写的,采用的TCP协议,当前的架构是打算用python构造结构体,传送给c++层进行socket发送给游戏服务器,响应消息再交由python进行校验;开始:首先是c++调用python这一层需要打通;幸运的是python自己有一套库提供c/c++进行调用;下面我贴代码;用的vs2013,python用的2.7// python_c++.cpp : 定义控制台应用程序的入口点。//转载 2020-05-29 09:26:20 · 1441 阅读 · 0 评论 -
PyImport_ImportModule返回值=null
原因:1. 添加路径PyRun_SimpleString("import sys"); PyRun_SimpleString("sys.path.append('./')");2.py文件中有语法错误3.引用别的模块,也要把别的路径加进来转载 2020-05-27 09:07:32 · 1483 阅读 · 5 评论 -
C++调用python
随着机器学习/深度学习这几年的的火热,python成了当红炸子鸡,使用python训练机器学习模型则成了开发人员们最喜欢的方法,但是由于过往调度系统一般都是用C++来开发的,因此我们只有两种方法来调用python脚本,一种是使用上篇中提到的子进程的方法,另外一种则是直接使用C++/python进行混合编程。基本使用方法python 提供了一套 C API库,使得开发者能很方便地从C/ C++ 程序中调用 Python 模块。具体的文档参考官方指南至于要使用这个套API,我们需要引入一个头文件和一转载 2020-05-26 22:13:05 · 405 阅读 · 0 评论 -
C++调用python过程笔记
此文是学习笔记,供日后翻阅。下面列出C++访问python所需的函数,按调用的先后次序排列。提示: 其中实例化类的方法是python3中的,若要使用python2,则用PyInstance_New这个方法。有关此方法网上有很多资料,就不列出了。//PyInitialize: 必须首先调用,初始化python运行所需模块。它无参数、无返回值void Py_Initialize();/*Py_IsInitialized: 检查初始化是否成功返回值: 成功返回true/bool Py_IsIniti转载 2020-05-26 14:09:16 · 328 阅读 · 0 评论 -
【C++】贪吃蛇小游戏--有图形界面和背景音乐
贪吃蛇是一款经典的小游戏,曾经在一些老式的手机上都是有的,今天我们就来实现一下这个小游戏。 首先是写代码钱的前期准备工作,我们这次实现的是带图形界面的贪吃蛇,必须要先下一个图形界面库,方便实现图形界面,这个图形界面库的名字叫做Easyx,可以在网上下载 直接进入下载就可以,然后装在vs的安装目录下: 首先我们要玩贪吃蛇需要两个部分蛇头和蛇身,我们先要定义两个宏一个控制蛇的最...原创 2018-08-12 18:14:35 · 17784 阅读 · 5 评论 -
【数据结构】栈和队列面试题
1、实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最 小值的操作)的时间复杂度为O(1) 针对这个问题我们可以有两种方法来解决,第一种方法: 我们每次压栈的时候压两个数字,先压数据,然后压最小值,每次压之前和数据比较一下,如果数据比最小值还小就把最小值更新成数据,然后再压数据和最小值,这就是压栈操作。这样可以保证栈顶就是最小值。 接下来是出栈操作,因为我们每次多压了一个...原创 2018-08-03 09:26:25 · 352 阅读 · 0 评论 -
【数据结构】链表常见面试题集锦
比较顺序表和链表的优缺点,说说它们分别在什么场景下使用? (1)空间上的比较, 顺序表是一段连续空间,然后实现数据的增删,顺序表一般是固定大小的,链表是每次之开辟一个节点的大小用多少给多少。 (2)空间的使用 顺序表是直接开辟一段空间,如果数据过少的话就会造成空间的浪费,而链表是需要存储一个数据才开辟一个节点的空间,来保存数据,虽然有一个非数据项的指针域占用空间,可是相比顺序表要好很多,...原创 2018-08-02 09:41:20 · 387 阅读 · 2 评论 -
【C++】C++知识框架
真的开始总结了才发现学的东西还是挺多的嘛,经过几天的整理总算是总结出来了原创 2018-07-31 16:13:42 · 767 阅读 · 0 评论 -
【C++】智能指针详解
参考资料:《C++ Primer中文版 第五版》 我们知道除了静态内存和栈内存外,每个程序还有一个内存池,这部分内存被称为自由空间或者堆。程序用堆来存储动态分配的对象即那些在程序运行时分配的对象,当动态对象不再使用时,我们的代码必须显式的销毁它们。在C++中,动态内存的管理是用一对运算符完成的:new和delete,new:在动态内存中为对象分配一块空间并返回一个指向该对象的指针,delet...原创 2018-07-31 14:01:36 · 226312 阅读 · 46 评论 -
【C++】C++11新特性列表
我们学习的标准是C++98,我们知道计算机的知识更新非常快,本文旨在大致了解C++11的新特性,如果想要仔细了解,请阅读《C++Primer中文版 第五版》本文的页码也是这本书的页码,这里附上这本书的百度云链接,用者自己下载即可:C++Primer中文版 第五版 直接点击即可下载 C++11新特性: 1.long long类型 p31 2.列表初始化 p39 3...原创 2018-07-30 16:37:02 · 484 阅读 · 3 评论 -
【C++】成员函数的重载、覆盖和隐藏
我们在学习C++中总会有很多概念容易搞混,其中成员函数的重载、覆盖和隐藏这三个概念就经常让很多人头大。 下面我们就来介绍一下这三个的区别: 成员函数被重载的条件是: (1)相同的范围也就是要在同一个类中 (2)函数名字相同 (3)参数不同(这里包括参数类型,参数的顺序,参数的个数) (4)virtual关键字可有可无 覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围也就是...原创 2018-07-30 14:27:32 · 227 阅读 · 0 评论 -
【数据结构】简单迷宫:假设只有一个出口
#define _CRT_SECURE_NO_WARNINGS//这里的迷宫用二位数组表示,1表示能走通其他表示不能走通#include#includeusing namespace std;struct Seat//储存坐标{ Seat(int x, int y) : _x(x), _y(y) {} int _x; int _y;};#define ROW 10#原创 2017-11-20 00:22:18 · 626 阅读 · 0 评论 -
【c++】简单实现二叉树
#include#includeusing namespace std;templatestruct BinTreeNode//二叉树的节点{ BinTreeNode(const T& data) :_pLeft(NULL) , _pRight(NULL) , _data(data) {} BinTreeNode* _pLeft;//左孩子 BinTreeNode* _pR原创 2017-12-04 23:51:25 · 411 阅读 · 0 评论 -
【c++】模板知识总结
首先来谈谈什么是模板?形象的来说,模板就是一个创建类或函数的蓝图或者公式。首先我们来看一个例子:比如说我们要实现一个函数来比较两个数的值,按照我们以前的习惯,我们会选择重载函数://如果相等则返回0,如果v1小返回-1,如果v2小返回1int compare(const string &v1, const string &v2){ if(v1<v2) return -1;原创 2017-11-04 13:07:56 · 578 阅读 · 0 评论 -
【剑指offer】实现1+2+3+..+n,要求不使用乘除法、循环、判断条件
这道题目的实质是考察程序员的发散思维能力,发散思维能够反映出应聘者知识面的宽度,以及对编程相关技术理解的深度。拿到这道题时,首先考虑最简便的方法当然是利用等差数列求和公式(n+1)n/2,想要得出结果,无外乎循环和递归两种,但是题目限制了循环,判断条件都不能使用,使用循环时就必须使用循环判断条件,,与条件不符;使用递归时,少不了if条件,这就需要考虑其他的一些路径。针对这道题目,这里介绍·四种解法...原创 2018-02-26 15:53:09 · 793 阅读 · 0 评论 -
【剑指offer】不使用加减乘除、++、--等运算
这道题仍然考察应聘者的发散思维:我们先分析一下,我们做加法的实质是什么,比如实现5和17的加法:第一步只做各位相加不进位,此时计算的结果是12(个位相加不要进位是2,加上十位的1,加起来是12);第二步,做进位,进位的值是10;第三步,将前面的两个结果加起来。题目不能使用四则运算,就只能使用位运算,位运算是针对二进制,5的二进制是101,17的二进制是10001我们将前面的数字按照前面三步进行运算...原创 2018-02-26 21:37:47 · 191 阅读 · 0 评论 -
元素出栈入栈的合法性
例如:入栈的序列(1,2,3,4,5),出栈的序列(4,5,3,2,1),则合法;入栈序列(1,2,3,4,5),出栈序列(4,5,2,3,1)则不合法。代码及详细分析如下:#include<iostream>#include<stack>using namespace std;template<class T>class Stack{public:...原创 2018-02-28 14:44:13 · 411 阅读 · 0 评论 -
【剑指offer】计算一个整数二进制位中1的个数
这里提出三种方法:就是代码中的三个函数:原理代码中的注释已经给出,这里不再重复阐述。代码如下:#include<iostream>using namespace std;int Count1OfNumber(int n)//有缺陷不能处理负数//原理:1&1 = 1 0&1 = 0,让该整数的每一位和1按位与,然后将该整数右移一位,循环此过程//直至该整数为0...原创 2018-02-28 15:23:35 · 345 阅读 · 0 评论 -
【剑指offer】数组中有数字出现次数超过数组一半
题目介绍:一个数组中有一个数字出现的次数超过了数组的一半,求出这个字符。例如:int a[] = { 2, 3, 2, 2, 2, 2, 2, 5, 4, 1, 2, 3 };求出超过一半的数字是2大概思路如下:我们先定义一个临时变量,让这个变量的值等于数组首元素,在定义一个计数器flag这个计数器表示当前临时变量值与数组中不同值抵消后剩下的次数,默认次数一次,将临时变量与 首元素下来的一个元素相...原创 2018-02-28 18:37:06 · 169 阅读 · 0 评论 -
【c++】条款一:视c++为一个语言联邦
一开始,c++只是在c上面加上一些面向对象特性。c++最初的名字C with Classes也反映了这个血缘关系。 但是当这个语言逐渐成熟,它变得更活跃无约束,更大胆更冒险,开始接受不同于C with class的各种观念、特性和编程战略。Exceptions(异常)对函数的结构化带来不同的做法,templates(模板)将我们带来新的设计思考方式,STL则定义了一个前所未有的伸展性做法。 今...原创 2018-05-25 23:10:01 · 350 阅读 · 0 评论 -
【c++】条款3:尽可能使用const
1、 const的一件奇妙事情是,它允许你指定一个语义约束(也就是指定一个“不该被改动”的对象),而编译器会强制实施这项约束。它允许你告诉编译器和其他程序员某值应该保持不变,只要这是事实,你就该确实说出来,因为说出来可以获得编译器的相助,确保这条约束不被违反。 2、关键字const多才多艺,你可以在classes外部修饰global或namespace作用域中的常量、或修饰文件、函数、或区块作...原创 2018-06-05 00:13:29 · 320 阅读 · 0 评论 -
【c++】条款2:尽量以const,enum,inline替换#define
这个条款或许改为“宁可以编译器替换预处理器“比较好,因为或许#define不被视为语言的一部分。那正是它的问题所在,当你做出这样的事情:#define ASPECT_RATIO 1.653记号名称ASPECT_RATIO也许从未被编译器看见:也许在编译器开始处理源码之前它就被预处理器移走了。于是记号名称ASPECT_RATIO有可能没进入记号表 内。于是当你运用此常量但获得一...原创 2018-06-01 00:03:18 · 341 阅读 · 0 评论 -
【c++】new和delete解析
某些程序对内存分配有特殊要求,因此我们就无法将标准内存管理机制直接应用于这些程序。它们常常需要自定义内存分配的细节,比如关键字new将对象放置在特定的内存空间中,为了实现这一个目的可以重载new运算符和delete运算符以控制内存分配的过程 (1)重载new和delete 想要重载这两个运算符首先要对这两个运算符有所了解 当我们执行下面一条语句:string *sp = new st...原创 2018-07-29 15:58:46 · 613 阅读 · 0 评论 -
【C++】继承和组合的区别
1.什么是继承A继承B,说明A是B的一种,并且B的所有行为对A都有意义eg:A=WOMAN B=HUMANA=鸵鸟 B=鸟 (不行),因为鸟会飞,但是鸵鸟不会。2.什么是组合若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B。例如眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类He...转载 2018-07-29 16:33:08 · 744 阅读 · 0 评论 -
【c++】const关键字解析
首先我们来看一下为什么要使用const呢?因为采用符号常量写出的代码更容易维护;指针常常是边读边移动,许多函数参数都是只读不谢的,const最常见的用法就是作为数组的界和switch分情况标记(也可以用枚举符代替)。 分类: 常变量:const 类型说明符 变量名 常引用: const 类型说明符 &amp;amp;amp; 引用名 常对象:类名::fun(形参) const 常数组:类型说明符 ...原创 2018-07-26 13:41:49 · 8802 阅读 · 2 评论 -
【C++】图解函数传参传值、传地址、传引用的区别
1、传值就像图中一样传的是原来实参的一份拷贝,对形参进行操纵不会改变实参的值,函数返回后,函数栈帧销毁,这份拷贝也会自动被回收 2、传指针就是为实参创建一个指针变量,指针变量里面存的就是实参的地址,对形参进行操作也会通过指针的间接访问对实参进行修改,所以对形参的操作会影响原来的值 3、传引用什么也没创建,只是给实参取了个别名,就像同学之间取外号一样,张三是这个同学,铁蛋也是这个同学,两...原创 2018-07-26 18:12:35 · 5838 阅读 · 1 评论 -
【数据结构】动态栈+括号匹配+逆波兰表达式(后缀表达式计算)
#define _CRT_SECURE_NO_WARNINGS#include//动态栈的简单实现#include#define DEFAULTSIZE 3using namespace std;templateclass Stack{public: Stack() :_array(NULL) , _size(0) , _capacity(0) { }原创 2017-11-20 00:35:09 · 172 阅读 · 0 评论