
C++随笔
文章平均质量分 56
猪猪加大码力
What doesn't kill you makes you stronger.
展开
-
C++多线程同步
C++多线程原创 2024-06-03 22:07:55 · 366 阅读 · 0 评论 -
C++ 使用jsoncpp解析json文件
C++使用jsoncpp解析json文件原创 2023-03-16 22:21:00 · 1143 阅读 · 0 评论 -
Windows编译Chrome浏览器【多图警告^-^】
Windows编译Chrome浏览器原创 2022-11-11 17:45:31 · 2412 阅读 · 3 评论 -
C++zlib库实现的GZIP压缩解压缩工具类【多图警告^_^】
前几天和服务端同事联调TCP传输压缩后的Json串,遇到了 GZIP压缩问题。需要把原来使用的的压缩算法和后端统一,现在来总结一下。【注意】 这里就以Windows的Debug环境为例,Release版也是一样,只需更改配置编译就好。代码演示中不未涉及文件序列化问题。文件(文件夹)压缩问题,可以参考zip压缩文章Zip压缩解压缩1.下载zlib源码及工程文件:https://www.zlib.net/2.拿到源码包解压看看3.打开目录zlib-1.2.11\contrib\vstudio\原创 2021-12-23 21:46:51 · 3992 阅读 · 0 评论 -
C++使用Sqlite
最近项目中有使用到sqlite处理数据,发现以前最基本的SQL有点把握不住了,就赶紧复习回顾一下。.1.先下载SQLlite官网下载包https://www.sqlite.org/download.htmlSQLite Download Page - Source Code - 我选择的版本号是:version 3.35.5下载解压完成后,拿到四个文件:2.添加进我们VS工程。开发环境:VS2013。添加四个文件到我们的工程:–编译错误;错误原因:不该使用预编译头。解决方法:选中原创 2021-05-22 18:09:18 · 12668 阅读 · 13 评论 -
C++试题:合并数组
题目描述给出两个有序的整数数组A和B,请将数组B合并到数组A中,变成一个有序的数组注意:可以假设A数组有足够的空间存放 B数组的元素,A和B中初始的元素数目分别为m和n#include <iostream>#include <map>using namespace std;class Solution {public: void merge(int A[], int m, int B[], int n) { multimap<int, int&g原创 2021-01-06 21:35:46 · 601 阅读 · 0 评论 -
C++面试题
最近在牛客上刷题,分享一些比较有意思的AC过了的题目哈1.DNA序列【字符串】题目描述一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。本题含有多组样例输入。输入描述:输入一个strin原创 2020-12-09 21:33:14 · 240 阅读 · 0 评论 -
好奇心的一天,如何查看VS工程代码行数?
今天早上,解决完问题候,突然就想自己写的工程有多少行代码呢?果然,有好玩的统计方法:a.查找- 组合键(ctrl + shift + F)- 输入:b*[^:b#/]+.*$b.范围:解决方案 - 勾选:正则表达式c.go又学到了好玩的一招,好玩儿 ^ - ^...原创 2020-11-30 21:45:38 · 2016 阅读 · 0 评论 -
VS2013输出内存泄漏并定位代码行位置
最近在研究智能指针,想到以前没有智能指针的时候,如何定位内存泄漏位置呢?今天学习一个写测试demo的时候,分析泄漏的方法。#include <iostream>using namespace std;#ifdef _DEBUG#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)#define new DEBUG_CLIENTBLOCK#endif void GetMemoryLeak(){ _Cr原创 2020-07-06 21:52:01 · 512 阅读 · 0 评论 -
小白搞定cJSON解析库
一、拿到解析库文件。这里,我就到交友圣地github下载好这个C语言开源项目。其作者在Usage开头介绍到cJSON意图成为最 dumb的json解析器,以至于它简单到只有一个源文件和一个头文件,我们可以直接包含到自己工程里面使用。二、创建demo程序。测试环境:Win10 + VS2019a).两个文件包含到我们测试程序中,并且创建一个工具类CMyJsonParser:b).解析类...原创 2020-04-19 17:32:38 · 1412 阅读 · 0 评论 -
C++判断一个大于2的整数是否是素数
最近在学习乔林老师的C++教学视频。在算法一节有关于判断素数的内容,感觉挺有收获的,就想着跟大家分享一下。现在,让我们一起来学习吧。1.面对素数合数检验,我们很容易就联想到暴力穷举的算法。例如以下例程:/*解法一*/bool IsPrime_1(unsigned int n){ unsigned int i = 2; while (i<n) { if (n%i == 0)...原创 2020-03-08 17:00:24 · 8024 阅读 · 2 评论 -
一起来学习C++队列的模板实现
1、概念。队列(Queue),队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。二、基本操作。1.Append();2.GetHead();3.GetTail();4.Pop();5.GetSize();6.IsEmpty...原创 2020-01-09 22:22:18 · 451 阅读 · 0 评论 -
C++操作符typeid学习
1、概述。在c++中,typeid用于返回指针或引用所指对象的实际类型。 – 百度百科2、实例头文件:#include <typeinfo>调用:int main(){ int a = 1; bool b = true; char c = 'c'; short d = 2; float e = 1.1f; double f = 2.2; long long ...原创 2020-01-09 21:07:12 · 215 阅读 · 0 评论 -
一道有趣的C++面试题
今天在溜达的时候,看到了一道题目,来学习一下。思考下面这道题目的输出:#include <iostream>#include <stdio.h>using namespace std;int main(){ for (char i = 0; i < 256; i++) { printf("%d ", i); } cin.get(); retu...原创 2019-12-22 22:53:49 · 246 阅读 · 0 评论 -
C++空类知识点学习
1、概述。空类,是指编译器不会生成任何成员函数的class。对于空类,编译器不会生成任何的成员函数,只会生成1个字节的占位符。2、为何EmptyClass占一字节呢?如果定义对EmptyClass取sizeof()的值为0,那么该空class实例化出100个对象时,在内存地址上就不能区分该class实例化出的对象,这是难以想象及接受的!因此,为了实现每个实例在内存中都有一个独一无二的地址,编...原创 2019-12-22 22:36:43 · 609 阅读 · 0 评论 -
Big Endian 和 Little Endian 详解
一、Endian的起源在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双...转载 2019-12-19 18:08:54 · 391 阅读 · 0 评论 -
C/C++ #define知识点
1、# 是把参数字符串化,## 是将两个参数连为一个整体。“#”表示这是一条预处理命令(凡是以“#”开头的均为预处理命令。)2、#define 的作用。#define是C/C++语言源程序中宏定义。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,叫做“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成。宏代换是由预处理程序自动完成。宏定义标识符,一般使用大写字...原创 2019-12-17 22:52:37 · 3239 阅读 · 0 评论 -
C++结构体对齐补齐实例学习
1、结构体的好处。需要使用结构这种聚合数据类型来处理基本数据类型难以处理的场景。2、为什么要内存对齐?2.1 平台原因:不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2.2 性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。因为为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问...原创 2019-12-09 23:27:08 · 888 阅读 · 0 评论 -
C++回调函数
1、概述。我们在C/C++编程中经常涉及到回调函数。回调函数到底是什么呢?回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。例如,我们在win32开发里面,使用windows A...原创 2019-12-05 21:06:59 · 293 阅读 · 0 评论 -
C++值传递、 引用传递和指针传递
1、引言。最近复习到了C++传值这块知识点。现在,再来回顾一下。2、说明。2.1 值传递。值传递是最常规的C语言传参方式。形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。2.2 引用传递。引用传递:形参是实参的“...原创 2019-11-27 22:17:23 · 636 阅读 · 1 评论 -
C++知识点之深拷贝和浅拷贝
1、引言。今天复习到C++深拷贝和浅拷贝的知识点。现在,做个梳理。2、浅拷贝。(反例)2.1 实例。#include <iostream>using namespace std;class Person{public: Person(int nHeight, int nWeight); ~Person(); //我们自己来写系统生成的Default Copy ...原创 2019-11-25 20:56:10 · 394 阅读 · 0 评论 -
自己实现库函数strcpy(),strlen()。
1、strcpy().用来拷贝字符串,将第二个字符串拷贝到第一个字符串里面。1.1 函数原型。const char * strcpy(char* dest, const char* src);1.2 自定义实现。const char * _myStrcpy(char* dest, const char* src){ assert((dest != NULL) && (...原创 2019-09-20 17:20:20 · 341 阅读 · 0 评论 -
Zip压缩解压缩之C++实现。
压缩:可压缩单一文件,也可压缩文件夹里的多个文件(包括文件夹里面的子文件夹)。压缩的目标文件格式无限制:demo文件使用的是.text,.h,.cpp,.png,.bmp,.wav,.mp4等。解压缩:非覆盖解压缩。1、codeproject下载地址:添加链接描述。下载zip库,得到四个文件:zip.h,zip.cpp,unzip.h,unzip.cpp,添加进工程。2、编译出现错误提示。...原创 2019-09-15 16:51:27 · 18755 阅读 · 110 评论 -
vs2013 error C3861: “snprintf”: 找不到标识符。
原因:snprintf()函数并不是标准c/c++中规定的函数,所以在许多编译器中,厂商提供了其相应的实现的版本。在gcc中,该函数名称就snprintf(),而在VS中称为_snprintf()。解决:①、用_snprintf()替换掉所有的snprintf()②、在预编译阶段,宏替换snprintf()。#if _MSC_VER#define snprintf _snprin...原创 2019-09-12 10:38:24 · 947 阅读 · 0 评论 -
关于C++基本数据类型的小小知识点
首先介绍模板类:numeric_limits,F12看一看。// CLASS numeric_limits<short>template<> class numeric_limits<short> : public _Num_int_base { // limits for type shortpublic: typedef short _Ty;...原创 2019-09-11 19:47:11 · 200 阅读 · 0 评论 -
一个求解π的小技巧。
室友一天下午复习到C语言,问到我double和float的区别。我准备用π来举例精确位数,就想起来求解PI的值。方法:利用反三角函数。#include<iostream>#include <iomanip>using namespace std;const double PI = acos(-1);//反余弦int main(){ cout <&l...原创 2019-09-11 19:39:00 · 270 阅读 · 0 评论 -
C++中的重载、重写、重定义
1、重载(overload)函数重载是指在一个类中声明多个名称相同但参数列表不同的函数,这些的参数可能个数或顺序,类型不同,但是不能靠返回类型来判断。特征是:(1)相同的范围(在同一个作用域中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无(注:函数重载与有无virtual修饰无关);(5)返回值可以不同;示例:/*.h文件*/#include &...原创 2019-08-08 19:06:00 · 1017 阅读 · 0 评论 -
处理VS2013的变量debug显示十六进制和十进制
断点下到某变量位置,光标移到变量上,出现该变量标签,右键菜单,默认十进制显示,可以选择十六进制显示。原创 2019-04-25 12:24:28 · 1234 阅读 · 0 评论 -
C++ 杨辉三角
突然间翻出来刚念大学的C++练习题~~哈百度百科:杨辉三角性质。前提:每行端点与结尾的数为1.1、每个数等于它上方两数之和。2、每行数字左右对称,由1开始逐渐变大。3、第n行的数字有n项…#include <iostream>using namespace std;const int N = 10;int main(){ int i, j, arr[N][N]...原创 2019-04-20 23:10:38 · 1721 阅读 · 0 评论 -
切割字符创函数strtok()的使用。
strtok()作用就是把一个字符串按照指定的截取标准,分割成一定数目的子串儿。感觉它用的还挺多。1、看一看它的声明:char * __cdecl strtok(_Inout_opt_z_ char * _Str, _In_z_ const char * _Delim);参数一:输入串。参数二:切割标识2、用法:首次调用需要把传入输入串,之后每次调用参数一设NULL。3、看看代码:...原创 2019-04-18 18:48:39 · 213 阅读 · 0 评论 -
看看递归和迭代在大循环次数下的效率。
看看递归和迭代在大循环次数下的效率。C++学生汪,只能看看黑窗口,更深层的道理还请前辈们多多指点,抱拳抱拳~老生常谈,还是以斐波那契兔子为例,贴代码~ #include <iostream> #include <atltime.h> using namespace std; long long recurse(int num); long long it...原创 2019-04-10 19:05:28 · 341 阅读 · 0 评论