
● C/C++
文章平均质量分 88
bat67
这个作者很懒,什么都没留下…
展开
-
整理:状态机的两种写法
有限状态机FSM思想广泛应用于硬件控制电路设计,也是软件上常用的一种处理方法(软件上称为FMM有限消息机)。它把复杂的控制逻辑分解成有限个稳定状态,在每个状态上判断事件,变连续处理为离散数字处理,符合计算机的工作特点。同时,因为有限状态机具有有限个状态,所以可以在实际的工程上实现。但这并不意味着其只能进行有限次的处理,相反,有限状态机是闭环系统,有限无穷,可以用有限的状态,处理无穷的事务。原创 2016-07-29 10:39:39 · 3168 阅读 · 0 评论 -
程序员常用字体(vs字体修改方案)
字体不仅是设计师手中重要的武器,对我们开发人员来说,字体的选择也有许多讲究,一个好的、适合展示代码的字体,应该具备以下要素:等宽的字符简洁、清晰并且规范的字符形状支持ASCII码为128以上的扩展字符集与字符同等宽度的空格易于分辨的小写字母l、大写字母I、数字1和符号|易于分辨的大写字母O和数字0易于分辨的前引号和后引号,最好能够前后对称易于分辨的其他标点符号,尤其是大括号、中括号、小括号转载 2016-10-11 16:28:36 · 6506 阅读 · 1 评论 -
string转int/float/double、int/float/double转string、转字符串数组的方法:stoi、stringstream、scanf、to_string、sprintf
一、string转化为数字1.使用stoi#include #include using namespace std;int main() { string str = "123"; int a = stoi(str); cout << a; str = "123.44"; double b = stod(str); co转载 2016-08-05 21:13:59 · 1349 阅读 · 0 评论 -
整理:状态机的两种写法对比
状态机可以用两种方法实现:竖着写(在状态中判断事件)和横着写(在事件中判断状态)。这两种实现在本质上是完全等效的,但在实际操作中,效果却截然不同。==================================竖着写(在状态中判断事件) C代码片段================================== cur_state = nxt_st原创 2016-07-29 10:35:35 · 3021 阅读 · 0 评论 -
整理:STL sort排序算法详细介绍
一切复杂的排序操作,都可以通过STL方便实现 !0 前言: STL,为什么你必须掌握对于程序员来说,数据结构是必修的一门课。从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来。幸运的是这些理论都已经比较成熟,算法也基本固定下来,不需要你再去花费心思去考虑其算法原理,也不用再去验证其准确性。不过,等你开始应用计算机语言来工作的时候,你会发现原创 2016-07-27 16:21:42 · 4652 阅读 · 1 评论 -
整理:CString类的完美总结&&CString 成员函数用法大全&&string 与 CString 转化&&<string><string.h> 和<cstring>的区别
CString类的完美总结:①、CString 类对象的初始化:CString str;CString str1(_T("abc"));CString str2 = _T("defg");TCHAR szBuf[] = _T("kkk");CString str3(szBuf);CString str4 = szBuf;TCHAR *p = _T("原创 2016-07-26 19:08:12 · 3274 阅读 · 1 评论 -
整理:<cmath> (<math.h>)
资料一:math.h头定义了各种数学函数和一个宏。这个库中所有可用的函数取double参数并返回double的结果。库宏只有一个在这个库中定义的宏:S.N.宏及说明1HUGE_VAL当函数结果可能不是一个浮点数表示。正确的结果如果幅度太大,无法表示的功能设置errno为ERANGE表示一个范围错误,原创 2016-07-25 16:57:43 · 1987 阅读 · 0 评论 -
CodeBlocks快捷键大全(附汉化教程及其文件)
以下需要设置的地方均在Settings->Editor...弹出的对话框中。不少命令都可针对当前行或选中的代码块,下文简称当前行或选中块。 ==日常编辑==Ø 按住Ctrl滚滚轮,代码的字体会随你心意变大变小,对保护视力特别有好处。Ø 在编辑区按住右键可拖动代码,省去拉(尤其是横向)滚动条之麻烦;相关设置:Mouse Drag Scrolling。Ø Ctrl转载 2016-07-24 13:38:40 · 1445 阅读 · 0 评论 -
string和stringstream用法总结
一、stringstring 是 C++ 提供的字串型態,和 C 的字串相比,除了有不限长度的优点外,还有其他许多方便的功能。要使用 string, 必須先加入这一行:#include 接下來要宣告一个字串变量,可以写成:string s;我们也可以在宣告的同时让它设成某个字串:string s="TCGS";而要取得其中某一個字元,和传统C 的字串转载 2016-08-05 13:59:27 · 934 阅读 · 0 评论 -
c++ stringstream
一、前言: 以前没有接触过stringstream这个类的时候,常用的字符串和数字转换函数就是sscanf和sprintf函数。开始的时候就觉得这两个函数应经很叼了,但是毕竟是属于c的。c++中引入了流的概念,通过流来实现字符串和数字的转换方便多了。在这里,总结之前的,并介绍新学的。二、常见格式串: %% 印出百分比符号,不转换。 %c 整数转转载 2016-08-05 13:51:35 · 338 阅读 · 0 评论 -
整理:std::sort源码剖析
从事程序设计行业的朋友一定对排序不陌生,它从我们刚刚接触数据结构课程开始便伴随我们左右,是需要掌握的重要技能。任何一本数据结构的教科书一定会介绍各种各样的排序算法,比如最简单的冒泡排序、插入排序、希尔排序、堆排序等。在现已知的所有排序算法之中,快速排序名如其名,以快速著称,它的平均时间复杂度可以达到O(N logN),是最快排序算法之一。背景在校期间,为了掌握这些排序算法,原创 2016-07-27 22:46:13 · 790 阅读 · 0 评论 -
奇偶剪枝
明天再详细补充。。。百度百科粘过来的 奇偶剪枝是数据结构的搜索中,剪枝的一种特殊小技巧。描述现假设起点为(sx,sy),终点为(ex,ey),给定t步恰好走到终点, s | | | ...原创 2017-05-17 22:56:24 · 716 阅读 · 0 评论 -
整理:warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
1>LIBCMT.lib(invarg.obj) : error LNK2005: __pInvalidArgHandler 已经在 LIBCMTD.lib(invarg.obj) 中定义1>LIBCMT.lib(invarg.obj) : error LNK2005: _initp_misc_invarg 已经在 LIBCMTD.lib(invarg.obj) 中定义1>LIBCMT.l原创 2016-10-11 22:06:25 · 43591 阅读 · 2 评论 -
整理:“烫烫烫”与“锟斤拷”的原理
手持两把锟斤拷,口中疾呼烫烫烫。脚踏千朵屯屯屯,笑看万物锘锘锘解释一下为什么会是这两个东西不是别的= =:锟斤拷乱码:源于GBK字符集和Unicode字符集之间的转换问题。Unicode和老编码体系的转化过程中,肯定有一些字,用Unicode是没法表示的,Unicode官方用了一个占位符来表示这些文字,这就是:U+FFFD REPLACEMENT CHARACTER。那么U+FFFD的...原创 2017-08-05 18:20:01 · 73171 阅读 · 2 评论 -
整理:C/C++可变参数,“## __VA_ARGS__”宏的介绍和使用
今天阅读代码的时候,在一个宏定义语句中,发现了个之前未曾见过的编译器预定义宏:“__VA_ARGS__”。当时,从代码语句中推测它代表宏参数:“…”(本文称之为省略号),依稀记得printf函数声明中有使用这个省略号,大概的意思是表示可变化的参数,但未深入了解。在网上看了相关文章的介绍,主要涉及了C/C++函数中可变化参数的基础知识,并延伸到宏定义中的可变参数。借这一次的学习,算是对可变化原创 2017-08-24 21:16:15 · 79081 阅读 · 6 评论 -
Codeblocks : Tips of a day
You can disable thesetips on startup if you uncheck the "Show tips at startup" box below You can have morethan one project open simultaneously Each project can havemore than one build target.原创 2017-08-25 19:12:57 · 666 阅读 · 0 评论 -
ACM向:关于优先队列priority_queue自定义比较函数用法整理
关于优先队列priority_queue自定义比较函数用法整理原来上不了网,写在word里了,代码什么的直接贴过来了,有空整理成高亮的形式。0.0、首先注意一点,priority_queue没有front()方法,和一般的queue不一样,与这个方法对应的是top()0.1默认的:它的模板声明带有三个参数,priority_queue<Type, Container, Fun...原创 2017-08-25 19:21:08 · 15479 阅读 · 12 评论 -
整理:Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++(主要Windows、简要Linux)
现在是2019.7.21,由于这阵一直在忙,今天我用最新的VSCode(Version 1.36.1) 和最新的Cpp插件(version 0.24.0)按照本文的安装步骤从零开始试了一下,由于vscode版本和cpp插件版本更新确实变化了很多,2019年7月21日更新的我会用这个颜色(粉色?)标示出来,供大家参考进行配置。也可以参考官方文档:https://code.visualstudio.c...原创 2017-07-25 21:13:12 · 700767 阅读 · 309 评论 -
acm的做题技巧
1.一般用C语言节约空间,要用C++库函数或STL时才用C++;cout、cin和printf、scanf最好不要混用。大数据输入输出时最好不要用cin、cout,防止超时。(或加上1 ios::sync_with_stdio(false); 2.有时候int型不够用,可以用long long或__int64型(两个下划线__)。值类型表示值介于 -2^63 ( -9,223,372,036,85...转载 2018-03-25 23:52:58 · 844 阅读 · 0 评论 -
欧几里得距离、曼哈顿距离与切比雪夫距离
欧几里得距离,欧氏距离,也就是我们熟知的距离,可扩展至m维 2维:d=sqrt((x1-x2)2+(y1-y2)2) 3维:d=sqrt((x1-x2)2+(y1-y2)2+(z1-z2)2) m维:d=sqrt(∑(xi,1-xi,2)2) 一般形式曼哈顿距离,出租车距离,在一个横竖分布的网格上,两点之间的距离即为曼哈顿距离原创 2017-05-19 11:03:04 · 746 阅读 · 0 评论 -
欧几里得距离、曼哈顿距离和切比雪夫距离
欧几里得距离,欧氏距离,也就是我们熟知的距离,可扩展至m维 2维:d=sqrt((x1-x2)2+(y1-y2)2) 3维:d=sqrt((x1-x2)2+(y1-y2)2+(z1-z2)2) m维:d=sqrt(∑(xi,1-xi,2)2) 一般形式曼哈顿距离,出租车距离,在一个横竖分布的网格上,两点之间的距离即为曼哈顿距离原创 2017-05-19 10:53:50 · 1329 阅读 · 0 评论 -
整理:STL 中 sort 函数用法简介 && 七种 qsort 排序方法
一、STL 中 sort 函数用法简介 做 ACM 题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的 O(n^2) 排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。 STL 里面有个 sort 函数,可以直接对数组排序,复杂度为n*log2(n) 。使用这个函数,需要包含头文件。 这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首原创 2016-07-27 16:29:37 · 663 阅读 · 0 评论 -
什么是段错误
什么是段错误段错误是指程序尝试访问一段不可访问的内存。在类Unix系统中,当出现段错误时,系统发送信号量SIGSEGV给产生段错误的进程;在Windows系统中,系统会发送异常STATUS_ACCESS_VIOLATION给产生段错误的进程。产生段错误的原因程序运行过程中能访问到的内存空间主要有栈和堆。栈存放了函数的本地变量,堆是程序运行过程中能够自由分配和使用的内转载 2016-07-27 11:59:13 · 10382 阅读 · 0 评论 -
字符指针的初始化
初学者经常被这个问题所困惑:char *p="abc"==>"abc"是一个const char*,为什么能够赋值给char *? 很多论坛上都可以看到这样的提问帖,不过这些帖子有的讲的是错误的,有的虽然是对的,但是讲的不细致,初学者不好理解。对此,我根据我的经验,以及优快云上的一些帖子仔细地说一下其中的道理。 按照 C/C++ 标准的描述,"abc" 是转载 2016-07-26 21:51:55 · 3144 阅读 · 0 评论 -
整理:i++ 与 ++i 的本质区别及效率
C++ 中的 i++ 和 ++i 是一对十分简洁但最容易让人忽视的操作,我已经对它们忽视了十多年,直到近日做一些迭代器时才有所体悟。在刚开始学习C++时虽然知道它们在加一操作上有一个先后的区别,但很难记住这个先后顺序,而且觉得只要不连带赋值操作时它们是等效的,所以也就没有花大力气去辨析它们,而是养成了单独使用它们的习惯,而且习惯性地只使用i++一个操作符。后来经常在原创 2016-07-25 17:07:26 · 1107 阅读 · 0 评论 -
好玩的编程网站整理 (未完成&&未整理) (暂时比较乱)
最近找各种有趣的编程网站,也收藏了不少,有点混乱,现在暂时整理一下,先写网址和网站名,暂时不传图片。有空再传。排名没有先后,哪个网站能打开就先写的哪个。原创 2016-07-23 21:04:55 · 6041 阅读 · 0 评论 -
OJ提交题目中的语言选项里G++与C++的区别
一、OJ提交题目中的语言选项里G++与C++的区别首先更正一个概念,C++是一门计算机编程语言,G++不是语言,是一款编译器中编译C++程序的命令而已。那么他们之间的区别是什么?在提交题目中的语言选项里,G++和C++都代表编译的方式。准确地说,选择C++的话,意味着你将使用的是最标准的编译方式,也就是ANSI C++编译。如果你使用的是G++的话,意味着你将使用GNU项目转载 2017-03-13 20:30:58 · 1042 阅读 · 0 评论 -
二分查找及其变形整理
1 二分查找 二分查找是一个基础的算法,也是面试中常考的一个知识点。二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。(图片来自《算法-第4版》)/** * 二分查找,找到该值在数组中的下标,否则为-1 */static int binarySera原创 2017-05-14 18:41:15 · 1466 阅读 · 1 评论 -
杭电ACM题单整理
杭电acm题目分类版本11002 简单的大数1003 DP经典问题,最大连续子段和1004 简单题1005 找规律(循环点)1006 感觉有点BT的题,我到现在还没过1007 经典问题,最近点对问题,用分治1008 简单题1009 贪心1010 搜索题,剪枝很关键10111012 简单题1013 简单题原创 2017-05-15 21:53:55 · 4591 阅读 · 1 评论 -
Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++(Windows)【真正的小白版】
写在前面:由于这学期(或者说这一年)一直在忙别的,也没什么闲心看博客了,近期发现自己的这篇文章:整理:Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++(Windows)竟然有了好多访问,也有不少童鞋问各种问题,非常感谢大家的支持,本来是自己整理的没想到有这么多人看hhh,正好近期自己换了台笔记本,就照着自己写过的VScode的教程自己搭建了一遍,...原创 2018-07-29 14:34:49 · 207259 阅读 · 175 评论 -
整理:memchr与strchr的区别
1.memchr检测的是一段内存,strchr检测的是一个字符串 如果一段内存中有0x0的话,显然不能用strchr去查找的。建议看看两个函数的原型2.strchr会停在\0,memchr不会,看接口就明白了:NAME memchr, memrchr - scan memory for a characterSYNOPSIS #i原创 2016-07-29 11:34:08 · 3349 阅读 · 0 评论 -
整理:<cctype>(<ctype.h>)
int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9') 返回非0值,否则返回0int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返原创 2016-07-25 11:10:44 · 2282 阅读 · 0 评论 -
printf 输出格式
格式代码AABCABCDEFGH%SAABCABCDEFGH%5S####A##ABCABCDEFGH%.5SAABCABCDE%5.5S####A##转载 2016-07-28 14:30:39 · 689 阅读 · 0 评论 -
基于C++浮点数(float、double)类型数据比较与转换的详解
浮点数在内存中的存储机制和整型数不同,其有舍入误差,在计算机中用近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。所以浮点数在运算过程中通常伴随着因为无法精确表示而进行的近似或舍入。但是这种设计的好处是可以在固定的长度上存储更大范围的数。1、将字符串转换为float、double过程原创 2016-07-28 15:07:14 · 2162 阅读 · 0 评论 -
float double 在内存中的存储
C语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit, double数据占用64bit,我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,转载 2016-07-28 15:14:26 · 461 阅读 · 0 评论 -
为什么使用%lf 读取double型的值,而用%f 进行显示?
注意scanf函数和printf函数是不同寻常的函数,因为它们都没有将函数的参数限制为固定数量。scanf函数和printf函数又可变长度的参数列表。当调用带可变长度参数列表的函数时,编译器会安排float参数自动转换成为double类型,其结果是printf函数无法区分float型和double型的参数。因此在printf函数调用中%f既可以表示float型又表示double型的参数。转载 2016-07-28 15:43:23 · 5276 阅读 · 0 评论 -
为什么printf()用%f输出double型,而scanf却用%lf呢?
《你必须知道的495个C语言问题》第12章标准输入输出库,本章的很多问题都跟printf(问题12.7到12.12)和scanf(问题12.13到12.22)有关。本文为大家介绍有人告诉我不能在printf中使用%lf。为什么printf()用%f输出double型,而scanf却用%lf呢? 示例:double x;scanf(“%f”,&x);输入“123.4”,输出x的值结果为0,没转载 2016-07-28 15:50:21 · 11875 阅读 · 0 评论 -
整理:状态机的编程思想
K&R习题1-23中,要求“编写一个程序,删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。在C语言中,注释不允许嵌套”。如果不考虑字符常量和字符串常量,问题确实很简单。只需要去掉//和/* */的注释。考虑到字符常量'\''和字符串常量"he\"/*hehe*/",还有类似的头文件以及表达式5/3中的除号/,情况就比较复杂了。 我想,这种问题最适合用正则表达式来解析原创 2016-07-29 10:18:10 · 5194 阅读 · 1 评论 -
整理:状态机的C语言编程
一 有限状态机的实现方式有限状态机(Finite State Machine或者Finite State Automata)是软件领域中一种重要的工具,很多东西的模型实际上就是有限状态机。FSM的实现方式:1) switch/case或者if/else这无意是最直观的方式,使用一堆条件判断,会编程的人都可以做到,对简单小巧的状态机来说最合适,但是毫无疑问,这样的方式比较原始,对原创 2016-07-29 10:33:42 · 22450 阅读 · 3 评论 -
整理:一种有限状态机的C语言实现
状态机的原理就不说了,先给出状态机的转换图,很简单实现的思路是这样的:1、用函数指针表示状态(状态函数)。2、状态函数接受一个参数(event),并根据event决定下一个状态。3、状态函数返回一个函数指针,此函数指针的类型也是状态函数指针。即状态函数返回一个指向下一个状态函数的指针。4、由于返回值是和原函数相同类型的函数指针,要原创 2016-07-29 10:37:15 · 1757 阅读 · 0 评论