C/C++
文章平均质量分 87
bailang_zhizun
这个作者很懒,什么都没留下…
展开
-
C++ - STL常见容器及其常见操作
本文主要记录一下STL中一些常见的容器(包括vector、deque、queue、list、stack、set、map),及其对应的常见的操作,不涉及更深层次原理性的知识。方便以后使用、查阅。原创 2021-07-20 17:41:56 · 1775 阅读 · 10 评论 -
编程 - DAMAGE:After normal block
错误源头一,数组访问越界: 大家先看如下一段程序: int* a = new int[5]; a[5] = 3; // 这儿访问越界了 delete[] a; 在delete[] a;这句代码处将会出现:DAMAGE:After normal block(#93)的错误。 错误源头二: char* pBuffer = new ch原创 2016-05-27 17:30:47 · 548 阅读 · 0 评论 -
MFC - 在对话框上的同一区域显示不同的内容(子对话框)
首先应该有一个主对话框MainDialog,两个子对话框ChildDialog1、ChildDialog2,其中两个子对话框的属性Style=Child,Border=None;分别对应类CMainDialog、CChildDialog1、CChildDialog2;两个子对话框的ID分别为IDD_CHILD1_DIALOG、IDD_CHILD2_DIALOG1)、在主对话框上添加一个原创 2016-10-10 13:51:25 · 6415 阅读 · 2 评论 -
【C++】类的内存分配(基本上包含了类的多种用法)
本文主要记录一下有关C++中类的内存分配的问题。包括普通类,派生类,派生类又可以分为是否包含了虚函数,是否多重继承,是否是虚继承等。关于这一部分的内容还是挺复杂的,有可能会有描述的不准确的地方,欢迎一起讨论,共同进步!原创 2021-05-21 16:25:08 · 8852 阅读 · 15 评论 -
C++ - 优化if-else-if结构(二):使用设计模式进行优化
1、前言在之前的文章 C++优化if-else-if结构(一) 中简单介绍了一些关于优化代码中过多if-else-if结构的情况;采用上述的方式也能进行一定程度的优化,但上述方法并没有采用面向对象的设计方式(OOD)。上述代码暴违背了面向对象的设计中要求的设计原则:(1)、单一职责原则:对类来说,一个类应该只负责一项职责;在上述类的设计中,类advNumSequence包含了比较多的职责,比如说adv_func1、adv_func2、adv_func3等。(2)、依赖倒置原则:依赖...原创 2021-05-17 18:19:01 · 3158 阅读 · 1 评论 -
【C++】 - 基本数据类型及其所占字节长度
C++中基本数据类型所占字节长度、取值范围、内存中二进制存储方式原创 2021-01-28 11:43:34 · 383 阅读 · 0 评论 -
C++ - 运算符
关于C++运算符的一些基本知识。记录以方便查找。1、运算符优先级2、运算符重载2.1、基本概念重载的运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成。和其他函数一样,重载的运算符也包含返回类型、参数列表以及函数体。关于运算符重载需要注意一下几点:可以重载大多数的运算符,而且我们只能重载已经存在的运算符; 重载运算符函数的参数数量与该运算符作用的运算对象数量一样多,即一元运算符有一个参数,二元有两个,但是不能有默认参数。原创 2021-01-28 11:40:36 · 295 阅读 · 0 评论 -
算法 - 合并多个排序链表
1、题目描述2、算法思想2.1、暴力法2.2、排序后相连可以用vector,也可以用list存储,一般情况下,如果不知道数据量有多少,用list的效率和内存使用上更优。代码中采用的是list,list自带的sort的函数时间复杂度应该是O(nlogn)。2.3、分治法理论上,当数据足够多时,分治法的时间复杂度是最优的。3、代码实现3.1、暴力法代码实现class Solution {public: ListNode* mergeKLis..原创 2020-08-14 16:32:01 · 854 阅读 · 0 评论 -
C++ - 异常处理
异常处理机制主要有两个主要成分:异常的鉴定与发出,以及异常的处理方式。通常,不论是member function或non-member function,都有可能产生异常以及处理异常。异常出现之后,正常程序的执行便被暂停(suspended),与此同时,异常处理机制开始搜索程序中有能力处理这一异常的地点。异常被处理完毕之后,程序的执行便会继续(resume),从异常处理点接着执行下去。1、异常抛出(Throwing an Exception)C++通过throw表达式产生(抛出)异常:void原创 2020-08-14 15:44:25 · 330 阅读 · 0 评论 -
C++ - 优化多if-else-if 结构(一)
在编程实践中总会遇到处理有大量分支情况,即根据不同的条件进行不同的处理。因为最近做项目时遇到过这样的情景,总觉得在代码中写一大堆if-ele-if分支代码块不是很优雅,所以在此记录一下大量if-else-if代码块的优化情况。1、level1:if-else-if分支(原始)当程序中有大量的分支情况进行处理时,if-else-if分支结构总是大量使用,switch-case分支结构也是经常使用的,但是前者的应用面更广一些。下面就是应用if-else-if分支结构进行处理的情况:class原创 2020-08-07 12:09:23 · 7500 阅读 · 1 评论 -
STL - 设计一个泛型算法
1、需求描述v-1需求:用户给予一个整数vector,我们必须返回一个新的vector,其中内含原vector之中小于10的所有数据。根据这个需求可以很容易的设计一个如下的函数 v1_less_than_10():using vecInt = vector<int>;vecInt v1_less_than_10(const vecInt& vec){ vecInt nVec; for (size_t ix = 0; ix < vec.size(); ix++原创 2020-08-04 16:04:13 · 280 阅读 · 0 评论 -
数据结构 - 栈的应用(符号匹配、中缀转后缀表达式、后缀表达式计算)
1、符号就近匹配就近匹配算法思路:1、从第一个字符串开始扫描2、当遇见普通字符串时忽略3、当遇见左符号时压入桟中4、当遇见右符号时,从桟中弹出栈顶符号,并进行匹配: 匹配成功:继续读入下一个字符 匹配失败:立即停止,并报错5、结束: 成功:所有字符扫描完毕,且栈为空 失败:匹配失败或所有字符扫描完毕但栈非空代码实现:#include "dm06_LinkStack.h"bool isLeft(c...原创 2020-07-30 10:20:39 · 630 阅读 · 0 评论 -
数据结构 - 二叉树的实现与操作
1、二叉树的表示法1.1、二叉链表示法数据结构定义://1 - 二叉链表示法//节点类型为inttypedef struct BiTNode{ int data; struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;//节点类型为chartypedef struct BiTNodeC{ char data; struct BiTNodeC *lchild, *rchild;}BiTNodeC, *BiTreeC;.原创 2020-07-29 16:27:18 · 415 阅读 · 0 评论 -
算法 - 几种常见的排序算法(选择、插入、冒泡、希尔、快速、归并)
几种常见的排序算法:选择排序、插入排序、冒泡排序、希尔排序、快速排序、归并排序。1、选择排序基本思想:每一趟(例如第i趟,i=0,1,...,n-2),在后面的n-i个待排的数据元素中选出关键字(最小的元素),作为有序元素序列的第i个元素。void myswap(int a[], int& i, int& j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}//选择排序void SelectSort(int a[], int原创 2020-07-29 14:38:36 · 646 阅读 · 0 评论 -
WinPcap - 捕获数据、发送数据
1、WinPcapWinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库。WinPcap提供了以下功能:捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的; 在数据包发送给某应用程序前,根据用户指定的规则过滤数据包; 将原始数据包通过网络发送出去; 收集并统计网络流量信息。WinPcap的功能与LibPcap的功能很相似,但是Wi...原创 2019-05-08 11:22:02 · 7171 阅读 · 1 评论 -
SQLite - 在程序中使用sqlite源代码
1、使用SQLite下载的库首先把SQLite源码下载下来,主要使用sqlite3.h文件。记录sqlite3.def文件(前面解压出来的文件)所在文件夹,如C:\SQLite通过VS2012编译,生成.lib文件。打开vs2012->工具->Visual Studio命令提示,打开命令行输入窗口:进入到sqlite3.def文件所在的文件夹,然后执行lib /d...原创 2019-03-20 12:03:35 · 965 阅读 · 0 评论 -
C/C++ — ini文件的读写、关于ini的遍历
1、ini的读写读:ini的读有两种方式1)、读取字符串:char str_value[64];GetPrivateProfileString(节名, 键名, "NULL", str_value, sizeof(str_value), "ini目录");2)、读取整数int int_value ;int_value = GetPrivateProfileInt(节名...原创 2016-09-01 11:19:55 · 2076 阅读 · 0 评论 -
C/C++ - int转float时精度损失问题
float类型数据在内存中的存储方式。int转float的经度损失。原创 2018-11-21 11:24:22 · 6705 阅读 · 1 评论 -
结构体 — C 语言中不定长结构体的使用
C语言中结构体的使用基本上都是定长的,就如以下这种:typedef struct{ int a; int b; char c[100]; double d;}STRU;但在很多的场景下,结构体的定义成不定长反而更容易解决问题,最典型的就是需要通过Socket发送一个结构体数据,但是结构体中包含了一个不定长的信息。可以采用以下方式来定义结构体:ty...原创 2018-11-14 17:52:00 · 8632 阅读 · 0 评论 -
CE-RTI开源软件代码学习笔记(一)
CERTI为本人第一次接触的开源软件,使用c++写的,作为一个一致从事c++工作的人来说,发现在看它的源代码时,感觉自己以前写的代码简直就是小学生写的。撇开代码中的与RTI相关的类和操作之外,c++本身自带的类、操作、或者技术都有许多不甚了解之处,甚感汗颜。故特此对在代码中遇到的c++相关技术做些记录,算是重新学习一下c++,深入的了解c++。原创 2017-03-10 11:43:31 · 2628 阅读 · 1 评论 -
Windows- 每隔1s执行一段程序的方法
#include<windows.h>.....while(1){Sleep(1000);//延时1s.......}另外Sleep(1000):占用CPU,线程休眠1000ms;系统的CPU部分资源被占用,其他线程无法进入,增加时间限制Wait(1000):不占用CPU,线程等待1000ms;等待使用CPU,不占用系统CPU资源,会增加时间限...原创 2016-05-26 15:37:52 · 6175 阅读 · 0 评论 -
Socket - 使用Socket 创建 TCP\UDP 通信(Windows)
Socket的使用可以分为TCP方式、UDP方式,下面就对两种使用方式进行简单的总结1、TCP方式TCP方式即点对点的方式,需要建立连接之后才能进行Socket通信。服务器端:在建立服务器端的Socket时,服务其端需要进行:1、初始化SOCKET运行库;2、配置通信地址;3、创建(socket)SOCKET;4、绑定(bind)SOCKET地址;5、监听(li...原创 2017-10-11 15:27:13 · 1700 阅读 · 0 评论 -
编程 - 截取字符串
1、string//截取某字符前的字符串stringstr="dsfsdf.abc";str.substr(0,str.find('.'));string str="123abc456";int i=3;1 取字符串的前i个字符str=str.Substring(0,i); // orstr=str.Remove(i,str.原创 2017-06-02 14:01:23 · 406 阅读 · 0 评论 -
编程 - Windows 查询执行中的进程
#include "tlhelp32.h"void OnInitCheckSTK_TAUOpen(){int find_flag = -1;HANDLE h1; CString pName;PROCESSENTRY32 p1;h1 = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);p1.dwSize = s原创 2017-10-24 16:06:20 · 305 阅读 · 0 评论 -
Socket - 通过SOCKET发送、接收结构体数据
通过SOCKET发送、接收结构体数据记录一下如何使用SOCKET发送、接收结构体数据。现有如下结构体:typedef STRUCT USERINFO{char name[30];char addr[100];int age;};定义结构体对象:USERINFO usreInfo;//发送结构体数据send(sock, (cha原创 2017-10-11 16:37:34 · 12884 阅读 · 0 评论 -
QT - 创建TCP Socket通信
QT创建TCP Socket通信 最近在学习QT,了解到QT可以进行SOCKET网络通信,进行学习,并建立一个简单的聊天DEMO。为了测试是否能与VS2012下的程序进行通信,在VS2012下建立一个客户端程序,进行通信测试,发现可以进行通信。由此也可以证明,对于采用同一种通信协议(TCP)的两个程序而言,不管是采用什么编译器,尽管采用的语法不同,仍是能够进行通信的。下面先对QT的...原创 2017-10-24 11:52:00 · 74465 阅读 · 18 评论 -
编程 - 回调函数、共享内存概念与使用,以及进程间函数调用的讨论
关于进程间函数调用,以及回调函数、共享内存的使用最近在做项目时,需要调用一个第三方的库和框架,在项目进行一段时间之后,突然发现对该第三方的库以及框架的实现机制不太了解,现根据其函数声明以及使用方式推导其实现机制。如有出入,还请见谅。1、问题描述2、回调函数3、共享内存4、其实现的可能方式5、其他可能的实现方式原创 2017-12-22 13:19:06 · 4159 阅读 · 0 评论 -
Python - C/C++嵌入Python(Embedding Python in Another Application)
嵌入Python1、 Python是一个优秀的语言,C/C++是很经典的语言,双方各有优缺点,那能不能把Python语言编写的脚本嵌入到C/C++程序里面呢?这样就能够同时使用C/C++语言的强大以及Python语言的简介高效。经查阅资料,发现Pyhon提供了一套机制用于嵌入到别的程序中,即Embedding Python in Another Application。 我原创 2017-12-27 16:20:06 · 835 阅读 · 0 评论 -
QT - 一些控件的简单使用
(QPushButton\QTextEdit\QDateTime\QTableWidget\QTreeWidget\QLCDNumber\QSplitterQStackedWidget) 最近在使用QT开发一个软件,之前已看过QT方面的书籍,但由于是第一次使用QT开发项目,在使用控件上还是不够熟练。特在此记录下QT中控件的一些简单实用的操作,以备不时之需。不定时更新:1、按钮控件:Q...原创 2018-04-08 14:20:58 · 2227 阅读 · 0 评论 -
Windows — 获取系统时间
1、通过 localtime_s() 获取当前时间1)、包含头文件<time.h>2)、定义两个变量: time_t tt;struct tm pTM;3)、获取时间:time(&tt);4)、转换为本地时间:localtime_s(&pTm, &tt);5)、格式化显示时间:sprintf(str, "时%d:...原创 2018-04-17 17:05:50 · 2834 阅读 · 0 评论 -
C - char与wchar_t(TCHAR/WCHAR)之间的相互转换
char与wchar_t(TCHAR.WCHAR)之间的相互转换原创 2018-05-17 11:31:38 · 32614 阅读 · 3 评论 -
编程 - XML的概念及其使用
1、引言在实际的项目开发中,有时为了传递大量且又有一些组织关系的数据时,选择何种格式来存储数据就是需要考虑的问题了。假设要传递一组数据,需要包含:飞机类型(F22),重量(20000kg),航程(10000km);同时该飞机下挂载了几种类型的导弹:导弹1(Misile1)、重量(100kg)、射程(100km),导弹2(Missile2)、重量(200kg)、射程(200km)。一般在使用...原创 2018-09-11 14:44:52 · 1112 阅读 · 0 评论 -
C++ - 类的继承和多态
总结以下有关类的概念,用于加深对类的理解。可能有不足或错误之处,欢迎指出,大家共同进步。1、引言介绍类,绕不过去两个概念:面向过程编程、面向对象编程(Object Oriented Programming)。其中面向过程的编程以C语言为代表的编程方式,面向过程程序的设计方式是:确定程序需要哪些过程,然后采用最合适的算法来实现;强调的是程序实现的过程以及实现过程中采用的算法。这程序开发的前期...原创 2018-09-13 18:11:40 · 546 阅读 · 0 评论 -
C - 结构体内存分配
最近又捡起了C语言,遇到了大量对结构体操作的业务,在操作期间,发现对结构体在内存中的分配仍然存有一定的疑问。,经过学习,特把有关结构体内存分配的相关知识记录下来。内存对齐:要了解结构体的内存分配,首先需要了解内存对齐的概念。之所以会有内存对齐的概念,是因为,在操作系统中,数据的存放时按照字节存放的,而结构体又不像数组,结构体中可以存放不同类型的数据,它的大小也不是简单的各个数据成员大小之和,限...原创 2018-11-07 14:41:39 · 12699 阅读 · 3 评论 -
Windows C — 设置定时器
在Windows C下采用timeSetEvent函数来设置定时器。关于timeSetEvent的函数原型及注释如下所示:MMRESULT timeSetEvent( UINT uDelay, // 定时事件的触发周期,单位为毫秒 UINT uResolution, // 定时事件的精度,单位为毫秒;值越小精度越高, L...原创 2018-11-13 14:19:08 · 4370 阅读 · 1 评论 -
MFC - 一些控件的简单操作
1、ComBox读:int choose_pos = 0;choose_pos = m_IniSectionCombox->GetCurSel();//20160831 GKK 读取节控件中的值m_IniSectionCombox->SetCurSel(choose_pos);GetDlgItemText(IDC_COMBO_INISCENATION, scenati...原创 2016-09-01 10:56:54 · 718 阅读 · 0 评论