
C/C++
文章平均质量分 53
github/gongluck
这个作者很懒,什么都没留下…
展开
-
C++实现循环数组/队列
https://github.com/gongluck/gcode/blob/master/cpp/algorithm/cycle_array/cycle_array.hpp]原创 2021-10-22 15:47:12 · 912 阅读 · 0 评论 -
Linux服务器开发&音视频技术整理、学习笔记
Linux服务器开发技术整理、学习笔记https://github.com/gongluck/CVIP原创 2020-12-07 10:37:55 · 531 阅读 · 0 评论 -
如何用Doxgen制作chm格式文档
对程序员来说,在开发自己的接口时,制作一个easy-go的文档也是coding中必不可少的一步,而且是相当重要的一步,虽然国内很多程序员,现在都略过了这一步。本文的前提是,大家已经在代码中写了符合生成注释文档的注释,关于注释的规则,可以参考百度文库里的一个文档 “使用Doxygen生成chm帮助文档使用详解”,链接地址:http://wenku.baidu.com/view/110caf8转载 2017-07-26 15:29:42 · 474 阅读 · 0 评论 -
[C++]:A*——A Star算法简介
A*算法 求最优解来源于我的博客算法一直维护两个表: Open和Close将起点S加入Open中将所有S可到达的点(障碍物以及位于Close表中的点均看成不可达)加入到Open中。将起点从Open中删去,并加入到Close中①从Open中删去F值最小的点Min,并将其加入到Close中②将Min点所有可到达的点加入Open中,并设这些点的父节点为转载 2017-07-05 21:13:42 · 441 阅读 · 0 评论 -
A*,那个传说中的算法
周日的下午,微信simplemain,老王又来找大伙儿聊技术了~~ 今天想跟大家聊的,是我们经常用到,但是却让大家觉得十分神秘的那个算法:A* 。 想必大家都玩儿过对战类的游戏,老王读书那会儿,中午吃完饭就会跟几个好哥们儿一起来两局红警。后来升级了,玩儿星际(是不是暴露年龄了,哈哈~~)。 玩儿的时候,就会发现这里面的兵(为了方便描述,把坦克、飞艇、矿车、龙骑等统称转载 2017-07-05 17:39:06 · 297 阅读 · 0 评论 -
结构体字节对齐
在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列,而不是简单地顺序排列,这就是内存对齐。 内存对齐的原因: 1)某些平台只能在特定的地转载 2017-10-30 11:48:38 · 229 阅读 · 0 评论 -
c++ 中__declspec 的用法 语法说明: __declspec ( extended-decl-modifier-seq ) 扩展修饰符: 1:align(#) 用__dec
c++ 中__declspec 的用法语法说明:__declspec ( extended-decl-modifier-seq )扩展修饰符:1:align(#) 用__declspec(align(#))精确控制用户自定数据的对齐方式 ,#是对齐值。e.g__declspec(align(32)) struct Str1{int转载 2017-09-06 10:28:47 · 654 阅读 · 0 评论 -
C++中_onexit()用法简述
引问:main 主函数执行完毕后,是否可能会再执行一段代码? 答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行。知识了解:(1)使用格式:_onexit(int fun()) ,其中函数fun()必须是带有int类型返回值的无参数函数;(2)_onexit() 包含在头文件cstdlib中,cstdlib为c语言中的库函数;(3)无论函数_onexi转载 2017-11-30 15:50:26 · 1773 阅读 · 0 评论 -
google protobuf学习笔记:编译安装、序列化、反序列化
简介 protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 、json进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率原创 2017-12-17 21:31:13 · 573 阅读 · 0 评论 -
Boost asio 官方教程
7.1. 概述本章介绍了 Boost C++ 库 Asio,它是异步输入输出的核心。 名字本身就说明了一切:Asio 意即异步输入/输出。 该库可以让 C++ 异步地处理数据,且平台独立。 异步数据处理就是指,任务触发后不需要等待它们完成。 相反,Boost.Asio 会在任务完成时触发一个应用。 异步任务的主要优点在于,在等待任务完成时不需要阻塞应用程序,可以去执行其它任务。异步转载 2018-02-24 17:50:01 · 36384 阅读 · 7 评论 -
编译boost
VS2015编译boost1.62Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关。大部分boost库功能的使用只需包括相应头文件即可转载 2018-03-23 23:46:01 · 609 阅读 · 0 评论 -
boost: atomic
Code#include <iostream>#include <boost/atomic.hpp>using namespace std;using namespace boost;int main(){ atomic<int> a(10); assert(a == 10); atomic<long>...原创 2018-03-24 16:59:21 · 708 阅读 · 0 评论 -
boost: timer
Code#include <Windows.h>#include <iostream>#include <boost/timer.hpp>using namespace std;using namespace boost;int main(){ timer t;//构造完成就开始计时 cout << "max ...原创 2018-03-28 22:25:39 · 354 阅读 · 0 评论 -
使用cJSON解析JSON字符串
JSON学习-使用cJSON解析 使用cJSON解析JSON字符串 一、为何选择cJSON 我们在使用JSON格式时,如果只是处理简单的协议,可以依据JSON格式,通过对字符串的操作来进行解析与创建。然而随着协议逐渐复杂起来,经常会遇到一些未考虑周全的地方,需要进一步的完善解析方法,此时,使用比较完善的JSON解析库的需求就提出来了。 基转载 2017-08-07 09:40:26 · 928 阅读 · 0 评论 -
使用cJSON创建JSON字符串
使用cJSON创建JSON字符串 在Linux下,使用C语言编程,开始JSON字符串的创建。我们还是一步步来,逐渐由简单到复制。 1,下载源码可以从如下网站来下载:https://sourceforge.net/projects/cjson/ 。2,包含cJSON的源码下载下来,解压后,从里面找到两个文件(cJSON.c、cJSON.h),复制到我们的工程里面。只需转载 2017-08-07 09:46:47 · 893 阅读 · 0 评论 -
C++项目中的extern "C" {}
引言在用C++的项目源码中,经常会不可避免的会看到下面的代码:123456789#ifdef __cplusplusextern"C" {#endif /*...*/ #ifdef __cplusplus}#endif它到底有什么用呢,你知道吗?而且这转载 2017-08-31 11:24:52 · 428 阅读 · 0 评论 -
前缀、中缀、后缀表达式
它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。举例:(3 + 4) × 5 - 6 就是中缀表达式- × + 3 4 5 6 前缀表达式3 4 + 5 × 6 - 后缀表达式中缀表达式(中缀记法)中缀表达式是一种通用的算术或逻辑公式表示方法转载 2017-05-19 11:33:45 · 411 阅读 · 0 评论 -
C++通过jsoncpp类库读写JSON文件
JSON是一个轻量级的数据定义格式,比起XML易学易用,而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择。JSON的全称为:JavaScript Object Notation ,顾名思义,JSON是用于标记javascript对象的,详情参考http://www.json.org/。本教程选择第三方库jsoncpp来解析json,jsoncpp是比较出名的c++解析库原创 2017-03-30 14:58:50 · 2847 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=88; int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include using namespace std; class CExample { private: int a; public:转载 2017-03-29 19:23:49 · 244 阅读 · 0 评论 -
c语言中函数参数处理顺序-从右向左
c语言中函数参数处理顺序-从右向左 下面我们来看2个案例,分析下c语言中函数参数处理顺序。 第一个:#include "stdio.h"void fn(int a,int b,int c){ printf("%d,%d,%d", a, b, c);}void main(){ int a = 3;转载 2017-03-29 19:20:39 · 10399 阅读 · 5 评论 -
野指针分析
1. 野指针的概念 所谓的野指针,就是说指针指向的那块内存,你没有合法操作的权限,也就是指针指向非法的内存空间,这样的指针就叫做野指针。2. 野指针产生的原因(1) 指针变量未初始化 任何指针变量刚被创建时不会被自动置为NULL,它的缺省值是随机的,所以这块内存,所以指针变量在创建时,要么初始化让它指向一块合法的内存,要么置为NULL。#include #in转载 2017-03-29 19:19:46 · 471 阅读 · 0 评论 -
黑暗的内存管理
黑暗的内存管理很多人对 C 语言深恶痛绝,仅仅是因为 C 语言迫使他们在编程中必须手动分配与释放内存,然后通过指针去访问,稍有不慎可能就会导致程序运行运行时出现内存泄漏或内存越界访问。C 程序的内存泄漏只会发生在程序所用的堆空间内,因为程序只能在堆空间内动态分配内存。NULL 指针、未初始化的指针以及引用的内存空间被释放了的指针,如果这些指针访问内存,很容易就让程序挂掉。转载 2017-03-29 19:14:48 · 372 阅读 · 0 评论 -
atoX 与 strtoX
在很多时候我们都很清楚 atoX 系列函数: atoi , atol , atof新来的一系列函数: strtol, strtoul, strtod 通常有如下的关系:1. 对应关系其中: atoi (把字符串转到整形) --对应-- strtol (把字符串转到长整形) atol (把字符串转转载 2017-06-30 13:48:10 · 1408 阅读 · 0 评论 -
C++:istreambuf_iterator与istream_iterator的区别
在C++中,流(stream)也可以看做是容器,因而也有相应的iterator来遍历流中的内容,其中就有本文要介绍的两个流迭代器:istreambuf_iterator和istream_iterator,这两个迭代器的用法和区别可以用一下两段代码来体现:例1:istreambuf_iterator[cpp] view plain copy #include转载 2017-06-28 14:48:58 · 4974 阅读 · 0 评论 -
统计字符串中的单词数目
//统计字符串中的单词数目——统计字符串中单词的数目,更复杂的话从一个文本中读出字符串并生成单词数目统计结果。/*Test my2test,12test...?tessthehe,dsf..e3234...242haha*///输出结果9#include #include #include using namespace std;int CountWords(char* fi原创 2017-06-26 14:38:21 · 467 阅读 · 0 评论 -
判断是否为回文
//判断是否为回文——判断用户输入的字符串是否为回文。回文是指正反拼写形式都是一样的词,譬如“racecar”。#define _CRT_SECURE_NO_WARNINGS#include using namespace std;bool IsPlalindromeW(const wchar_t* str){ size_t len = wcslen(str); for (int原创 2017-06-26 10:17:16 · 454 阅读 · 0 评论 -
统计元音字母
//统计元音字母——输入一个字符串,统计处其中元音字母的数量。更复杂点的话统计出每个元音字母的数量。#include using namespace std;bool CountChar(const char* str, int* cA, int* cE, int* cI, int* cO, int* cU, int* all){ int len = strlen(str); if原创 2017-06-26 09:40:04 · 1236 阅读 · 0 评论 -
拉丁猪文字游戏
拉丁猪文字游戏——这是一个英语语言游戏。基本规则是将一个英语单词的第一个辅音音素的字母移动到词尾并且加上后缀-ay(譬如“banana”会变成“anana-bay”)。可以在维基百科上了解更多内容。#include #include using namespace std;bool PigLatin(string& str){ string::size_type pos = st原创 2017-06-22 09:47:14 · 906 阅读 · 0 评论 -
逆转字符串
逆转字符串——输入一个字符串,将其逆转并输出#define _CRT_SECURE_NO_WARNINGS#include #include using namespace std;//ANSIC,有中文就出错//bool ReverseStringA(char* str)//{// int len = strlen(str);// unsigned char temp;原创 2017-06-22 09:17:10 · 442 阅读 · 0 评论 -
ANSI, UNICODE,UTF8编码的区别
本地化过程中涉及到源文件和目标文件的传输问题,这时候编码就显得很重要。中文的网页和操作系统中通常采用ANSI编码,这也是微软OS的一个字符标准。对于ANSI,不同的国家和地区制定了不同的标准,由此产生了GB2312(简体中文),BIG5(繁体中文),JIS(日文)等各自的编码标准。但不同的ANSI编码在不同语言之间是不兼容的,所以对于不同的操作系统之间文件的传输,或者在同样的操作系统下,源文件语言转载 2017-06-18 18:09:40 · 412 阅读 · 0 评论 -
多个源文件共享一个全局变量
http://bbs.youkuaiyun.com/topics/390762077在头中声明,某个.c中定义, 其他.c中使用。原创 2017-06-07 13:56:41 · 1492 阅读 · 0 评论 -
sscanf的高级用法 正则表达式
sscanf() - 从一个字符串中读进与指定格式相符的数据。函数原型:int sscanf( const char *, const char *, ...);int sscanf(const char *buffer,const char *format,[argument ]...);buffer存储的数据format格式控制字符串argument 选择性设定字符转载 2017-05-26 10:30:35 · 351 阅读 · 0 评论