C/C++
文章平均质量分 77
枯萎的海风
向来缘浅, 奈何情深, 彼此豆蔻,谁许谁地老天荒, 敌不过似水流年, 逃不过此间少年
展开
-
LeetCode 130. Surrounded Regions
1. 题目描述 Given a 2D board containing ‘X’ and ‘O’, capture all regions surrounded by ‘X’. A region is captured by flipping all ‘O’s into ‘X’s in that surrounded region. For example, X X X原创 2016-03-30 12:21:57 · 469 阅读 · 0 评论 -
MFC 实现单进程运行
最近在调试老板的相机系统程序, 我们使用进程间通信IPC, 用的是命名管道技术, 成功实现了两个进程之间的数据交互, 考虑到需要每次手工启动另一个辅助程序, 我们在主程序里面使用了, createprocess对他进行调用, 正常情况下, 程序运行完好, 主程序启动的时候, 顺便把子程序顺带给启动了, 主程序关闭的时候, 顺便把子程序也关闭了。 但是最近遇到一个比较蛋疼的情况, 就是当主程序非正常原创 2016-03-07 11:26:25 · 1132 阅读 · 0 评论 -
MFC 程序隐藏界面
最近在整合相机和数据发送程序, 由于两个程序都用到了socket编程, 考虑到之前一次整合相机和蓝牙程序的时候, 两个socket只能有一个工作的情况(至于为什么会是这种情况, 到现在还是没有能够弄明白), 于是这次采用IPC 通信, 我们采用的是命名管道。 带来一个问题, 我们启动另一个exe实际上是作为服务使用的, 本来应该是写成控制台程序比较好, 但是, 因为这个程序一开始我们已经写好了,原创 2016-02-26 21:06:21 · 4688 阅读 · 0 评论 -
C++ primer 5 笔记4 chapter 4 表达式
4.1 基础要求 二元运算符两侧的数据类型 相同 或者可以转化成 同一类型左值, 使用对象的身份, 即其在内存中的地址右值, 即使用对象的值decltype 作用于表达式(非变量) 得到一个引用类型int * p = nullptr;decltype(p) // int *decltype(*p) // int &, 这个自己没想明白, 个人感觉应该是 intdecltype原创 2015-09-28 16:52:19 · 346 阅读 · 0 评论 -
C++ primer 5 笔记3 chapter 3 字符串, 向量和数组
chapter 3 字符串, 向量和数组命名空间的using 声明头文件中请不要包含using 声明, 因为, 头文件中的内容会被拷贝到引用它的文件中去。标准库类型string如果一个表达式中已经有了size()函数, 就不要再使用int了标准库类型vector范围 for 语句体内不应该改变其所遍历的序列的大小注意避免下标越界 ( 缓冲区溢出问题)迭代器介绍cbegin, cend原创 2015-09-20 20:47:39 · 354 阅读 · 0 评论 -
C++ primer 5 笔记2 chapter 2 变量和基本类型(2.1~2.3)
第二章是变量和基本类型2.1 基本内置类型2.1.1 算术类型a、C++相比C 多了几个算术类型 wchar_t, char16_t, char32_t 其中, wchar_t 是宽字符, char16_t, char32_t 是unicode字符, 问题来了, 宽字符和unicode有什么区别呢? 打开百度一下,你就不知道宽字符 ,我们可以知道 用多个字节来代表的字符原创 2015-07-11 19:04:50 · 560 阅读 · 0 评论 -
C++ primer 5 笔记1 chapter 1 begin
以后每次阅读C++ primer 5 都争取记点重点下来, 方便以后查看。本文主要针对书本中的第一章的内容 1.1 编写一个简单的C++程序 a. main 函数的返回值类型必须为int 在vs 2013 中, 可以用void类型, 但对于g++不行。 (ps:C语言是允许的, vs, gcc 均能通过)b.微软的编译器是cl1.2 标准输入输出原创 2015-07-10 17:41:15 · 889 阅读 · 0 评论 -
explicit constructor的用法
原文地址: explicit constructor的用法explicit constructor: explicit关键字用来修饰构造函数,使之不能被隐式调用。 对上面的例子: class T { public: explicit T(){} //没有效果。因为default constructor不会参加隐式转换 explicit转载 2015-06-16 14:16:33 · 1196 阅读 · 0 评论 -
C++中placement new操作符
原文地址:C++中placement new操作符(经典)placement new是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。它的原型如下:void *operator new( size_t, void *p ) throw() { ret转载 2015-06-08 20:44:18 · 438 阅读 · 0 评论 -
最小重量问题的分支界限法的C++实现方案
*1.问题描述:* *2.解题思路* 这个题目基本思想是 利用分支界限法, 核心就是需要设计一个 优先级标准, 这里我们将 问题的层数,也就是第i个部件作为优先级, 对于相同i的部件,以重量更小的作为优先级的评价标准,然后借助标准库中的优先级队列实现,分支界限法 查找目标。另外需要注意的是, 使用标准库中的优先级队列时候需要自己重载operator< ,而且一定要有const,233333333原创 2015-05-25 21:09:47 · 5112 阅读 · 0 评论 -
拉丁矩阵问题 利用回溯法的C++实现方案
这两天正好在赶算法设计的作业,这里把做的几个需要写代码的题放上来,方便以后查看。 1.题目要求 2.算法思想 这个题目基本思想是 利用回溯法,对于 m 行 n 列, 本质上就是一个二维数组, 我们可以将问题的解写成 x[1],x[2],x[3] … x[m*n], 那么对于每个点 x[i] 的取值实际上是 [1, n], 套用回溯法的算法框架,这里的 约束条件 ,就是同行,同列 没有相原创 2015-05-25 20:53:55 · 5170 阅读 · 1 评论 -
C++ primer 5 笔记3 chapter 2 变量和基本类型(2.4~2.6)
2.4 const 限定符const 对象一旦初始化, 他的值就不会改变, 因而const对象必须初始化, 可以是任意复杂表达式, 允许运行时初始化 const int j = get_size(); const int i = 42; 对于const对象的主要限制是, 只能在const类型的对象上执行不改变其内容的操作如果使用一个对象去初始化另一个对象, 是不是const对象其实无所原创 2015-07-14 16:15:18 · 729 阅读 · 0 评论 -
经典算法---8皇后问题的C++实现
其实8皇后问题,很好理解,8X8的棋盘上面,放8只皇后,使他们之间不会相互攻击,具体的定义,渊源可以查看百度百科八皇后问题本科时候学数据结构的时候就接触过这个经典算法,不过当时没怎么听明白,或者说知道是个回溯的思想,却不知道该怎么实现,原谅我只是个小白。今天上振动力学的时候,闲着没事突然想到了这个问题,顺手写下了伪代码,到实验室调试一下,基本就出来了。调试过程中遇到了两个bug,在代码中已经注明了(原创 2015-05-19 11:35:04 · 7675 阅读 · 0 评论 -
poj 1782 Run Length Encoding
这道题目不难,但是有很多细节是需要注意的1.读入一个带有空格的字符串string,可以采用string类中的getline方法2.这道题目理解起来有些问题,这里做一些解释:理解题目出了问题 走了很多弯路!!!run length encoding 变长编码,要求 2- 9 个相同字符转化为 count + X 形式表示,同时提取最大子串 前后加上1,亦即 1 str 1如果原创 2015-01-17 11:47:30 · 748 阅读 · 0 评论 -
poj 1008 Maya Calendar
这道题目其实不难,不过总是废了好多时间,好忧桑,编程能力还是太弱小了,遇到的问题主要是:1.数据读入,有个'.',后来突然想到可以通过读入float解决2.年月转换时候的+1,-1有些晕,这个需要格外注意下。Source CodeProblem: 1008 User: zhyh2010Memory: 240K Time: 0MS原创 2015-01-07 22:08:20 · 550 阅读 · 0 评论 -
poj 1007 DNAsorting
1.这道题目其实蛮简单的,只是在排序的时候卡了一下,本来打算找一下能不能用C++自带的快速排序解决的(qsort)但是qsort定义的格式和我传入的格式不符合,实在受不了,就自己直接用快速排序实现了一下2.还是自己太弱了,网上一搜发现有很多用sort,qsort做的,果然自己还是太弱小了http://blog.csdn.net/lyy289065406/article/details/66原创 2015-01-07 19:55:28 · 559 阅读 · 0 评论 -
poj 1006 Biorhythms
今天学完B树之后想顺手做一道poj,依次下来今天轮到1006,但是读完题目发现这道题目似乎是个数论题目,没有思路。于是上网搜,发现这道题目是个中国余数定理的题目,没办法,研究了一晚上的中国余数定理,感觉算法导论中这部分的内容好像将不是很清楚,于是参考了http://blog.csdn.net/jiaobuchong/article/details/40585575这篇文章,终于把中国余数定理弄明白原创 2014-12-03 22:42:18 · 730 阅读 · 0 评论 -
poj 1005 I Think I Need a Houseboat(水题)
今天顺手又做了一题,也是一道水题,很快就做出来了,今天有些进步,没有写成C++类的形式,值得高兴下,自己还是会写成C的格式的。在用PI的时候遇到一些问题,我之前都是用matlab写代码的,pi什么的基本函数都是直接提供的,到了C++中,似乎没有直接的PI给我使用,于是我上网找了一下,基本两种方法:1.http://blog.csdn.net/markton1990/article/deta原创 2014-12-02 14:20:13 · 675 阅读 · 0 评论 -
poj 1004 Financial Management
这道题目读到最后就是个求平均数的问题,这真的是一道水到极点的题目,本来以为会在数字表达上面有些难度,于是写了个round,然后两次compile error,系统不识别round函数,可是这在我的vs上面能跑的,没办法写了一个myround实现数据元整,后来发现完全没有必要,AC之后看了其他孩子的代码,压根就没数据后两位的处理,果然还是我想多了,水题,不推荐做。突然发现自己已经习惯拿到一个问题直接原创 2014-12-01 22:49:20 · 756 阅读 · 0 评论 -
poj 1003 hangover 水题
这道题目是我现在遇到的最简单的一题,(忽略1000),问题没有任何难度,就是寻找恰好大于问题所需值的卡片个数,我们这里第一反应是给他建立一个表格记录对应n张卡片最大长度,然后通过二分查找,很容易得到所需卡片数目。(可能是最近在看动态规划的原因吧,有些草木皆兵了)。另外,提交后发现其他孩子的源代码,用C写的,很简洁,他们拿到这个数直接判断,和我们这个方法思路不太一样,当做一种启发吧。http:/原创 2014-11-30 15:26:52 · 917 阅读 · 0 评论 -
poj 1002 电话号码查重
虽然网上都说#include #include #include using namespace std;class PhoneNUM{public: PhoneNUM(); ~PhoneNUM(); void input(); void output();protected: void initmap();private: //int m_dat原创 2014-11-20 18:44:54 · 1660 阅读 · 0 评论 -
C/C++输入/输出重定向
原文地址:http://blog.csdn.net/ltx06/article/details/18894775前言 在我学习C语言的初期,一直有个麻烦,因为打印的调试或者结果信息过多,一屏显示不下,所以很多时候我看不到前面打印出来的信息,唯一的方法就是不停地按CTRL+ALT+PAUSE组合键来暂停输出~~~有心要把它改成文件输出吧,想到要一个一个地把printf改转载 2014-10-19 16:07:47 · 7040 阅读 · 0 评论 -
c++里关于cerr,clog,cout三者的区别
c++里关于cerr,clog,cout三者的区别:cerr(无缓冲标准错误)-----没有缓冲,发送给它的内容立即被输出clog(缓冲标准错误)--------有缓冲,缓冲区满时输出cout-------------------------标准输出三个都是ostream类定义的输出流对象,cout是在终端显示器输出,cout流在内存中对应开辟了一个缓冲区,转载 2014-10-19 15:33:30 · 874 阅读 · 0 评论 -
C语言中的strlen实现方法
最近想实现一下strlen, 写了如下代码int mystrlen(const char * str){ assert(str != NULL); const char * pstr = str; //get length int length = 0; while (*pstr++ && ++length); //printf("length = %原创 2015-07-12 18:53:56 · 3473 阅读 · 0 评论 -
C中strstr的实现方法
做题目的时候需要自己实现strstr函数/************************************************************************//* 编写函数IND,让它判断一个字符串是否为另一个字符串的子串的功能,若是则返回第一次出现的起始位置,否则返回0。 /*/***********************************原创 2015-07-10 17:01:45 · 3874 阅读 · 2 评论 -
C语言中strcat的实现方法
最近看到一道题目要求, 自己码代码实现strcat的功能, 于是自己实现了一个如下:/** 12.编写一个函数JOIN,让它实现字符串连接运算功能。*/#include <stdio.h>#include <assert.h>#include <stdlib.h>#include <string.h>// ==============【自己实现的strcat】============原创 2015-07-10 16:11:59 · 8844 阅读 · 0 评论 -
字符串动态数组的C实现方法
我们知道C++是支持容器的, 对于各种数据类型都能有很好的支持,但是C不一样, C的数据类型支持真的很差,一旦换一种类型,又得重新编码,比如从int型的动态数组 转到string类型的动态数组,会发现这是件非常痛苦的事情。今天手贱,用C实现一下字符串动态数组的编写。主要目的是: 1. 回顾一下,C中的动态内存分配方法,(主要就是malloc, realloc, free的使用), 按照我们的理解C原创 2015-06-22 17:54:49 · 3792 阅读 · 0 评论 -
C中float类型与0比较用e-7的原因
最近看到一道面试题,要求写出 bool, int , float, 指针变量 与 0 的判断相等的表示形式。 这里float类型给出的参考答案是:if (fabs(data) <= 1e-7)那么问题来了,为什么用 1e-7呢?通过查阅资料,我们发现,float单精度,在内存中应该是 1 个符号位, 8个指数位 和 23个有效数据位。而 2^23 ~ 10^ 7, 由此得到 1e-7.参考资料:原创 2015-06-08 21:49:57 · 3253 阅读 · 0 评论 -
C语言初学者编程规范—命名规则
原文地址:C语言初学者编程规范—命名规则C是一门朴素的语言,你使用的命名也应该这样。与Modula-2和Pascal程序员不同,C程序员不使用诸如“ThisVariableIsATemporaryCounter”这样“聪明”的名字。C程序员应该叫它“tmp”,这写起来更简单,也不会更难懂。然而,当面对复杂情况时就有些棘手,给全局变量取一个描述性的名字是必要的。把一个全局函数叫做“f转载 2015-06-07 23:26:01 · 5371 阅读 · 0 评论 -
经典算法之线性时间选择的C实现方法
线性时间选择问题,实际上是随机快速排序算法的一个引申,ie,通过对随机快速排序算法的小小改动就可以实现。算法依然参考算法导论中的相关内容,需要注意的是, 代码中 的id 是指 所要 找的量在 现有区间 【low, high】中的位置, 因而,需要涉及 一定转化。 ps: mid - low + 1 表示 我们划分出来的第一个区间的长度大小。源代码如下:// ====================原创 2015-06-06 20:51:29 · 3890 阅读 · 0 评论 -
经典算法之快速排序的C实现方法
这里所实现的快速排序是参考《算法导论》上的伪代码,虽然之前对着伪代码敲过一遍,可是现在抛开伪代码,自己敲还是有些费劲。<-_->!!特别需要注意的是算法导论中的快排方法,和课上讲的不太一样,课上讲的主要是利用首尾两个下标来实现, 而算法导论中,主要是 从前到后,依次判断,将小于privot 的值全部移到 i 的前面去。这里 i 是指 小于 privot值的下标上界。源代码如下:// ========原创 2015-06-06 18:25:54 · 1388 阅读 · 0 评论 -
经典算法之归并排序的C实现方法
以前写过归并排序的算法,但是时间过了好久,忘记怎么写的了,(也是醉了)。正好复习算法的时候遇到这个问题,就重新写了一下,把遇到的一些问题顺便记录一下。核心就是用两个子数组记录分割后的两个数组中的变量, 然后依次比较大小即可。 这里有个细节需要注意一下, arr_temp1[mid + 1 - low] = INT_MAX; 这段代码,用来设置一个哨兵, 用这种方法可以避免判断数组是否为空了具体原创 2015-06-06 16:00:56 · 2016 阅读 · 0 评论 -
经典算法之二分搜索技术
二分法是个非常经典的算法,是分治思想的很好的体现。在复习算法的过程中,正好把他记录下来。本来想写递归的,后来想想还是用迭代,效率更高些,虽然对这种小的数据没什么多大影响,(好吧,其实是我太懒了 <-_->!!)这里有个坑,以前一直没有注意,这里标记一下,调整上下限的时候一定要low = mid + 1; high = mid - 1; 否则可能遇到相邻的两个数字时候,陷入死循环!!!代码如下://原创 2015-06-06 11:47:02 · 2648 阅读 · 0 评论 -
生成n个元素的全排列 C实现
最近在准备复习算法设计的考试,下边记录一些,看笔记时突然想到的解法。 问题是这样的 用递归实现 n 个元素的全排列。当时老师给出的解答是 假定第i个元素 ri 放在首位,于是 f(r1,r2,…,rn) = f(ri U {r1, r2,….,rn}) = U (ri & f(r1,r2, …, rn)), 当时应该是听懂了,不过现在看到这个笔记,又醉了。 (这货居然是我上课记的笔记 。。。。原创 2015-06-06 11:13:05 · 1861 阅读 · 0 评论 -
利用detours实现API劫持
一直想玩黑客技术,今天正好找到一个detours的库,这是微软的出品的用来搞这类活动的库,下载下来,用了一下,把messagebox给劫持了,感觉各种好happy,23333333333 这里需要特别注意的一点是,一定要在release模式下使用,否则是显示不出效果的。// ====================== 【API劫持】===========================// @原创 2015-05-30 20:58:09 · 3829 阅读 · 0 评论 -
C语言实现原码补码输出
今天复习了一下C中的原码补码的知识,顺便编程使用for , while, do-while,goto,recursive 实现了补码和原码的输出。核心思想: 借助一个字符串数组,将得到的原码和补码存储到相应数组中去。在计算原码的时候,由于存在负数的补码等于原码取反+1的这么一个关系,因而只要计算一个在计算机内部存贮着的补码就可以了。而获取补码的方式很简单,只需要依次做位与操作,逐个取出即可。原创 2015-05-30 20:19:32 · 16127 阅读 · 1 评论 -
十个最值得阅读学习的C开源项目代
[导读] 开源世界有许多优秀的开源项目,我选取其中十个最优秀的、最轻量级的C语言的项目,希望可以为C语言开发人员提供参考。 开源世界有许多优秀的开源项目,我选取其中十个最优秀的、最轻量级的C语言的项目,希望可以为C语言开发人员提供参考。1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟转载 2015-05-09 11:31:15 · 597 阅读 · 0 评论 -
编程之美之数独求解器的C++实现方法
编程之美的第一章的第15节,讲的是构造数独,一开始拿到这个问题的确没有思路, 不过看了书中的介绍之后, 发现原来这个的求解思路和N皇后问题是一致的, 但是不知道为啥,反正一开始确实没有想到这个回溯法,知道是用回溯法求解之后,问题就变得容易了很多。 这里我们不打算实现数独的构造,相反的,我们实现一个数独求解器,以后妈妈再也不用担心我的数独了。当然求解器的思路和构造数独的思路一样,都是回溯法搜索,这里原创 2015-06-25 11:19:45 · 3203 阅读 · 0 评论 -
编程之美之买书问题
拿到这个问题,我的第一反应是用贪心算法,优先满足不同种类多的,这样打的折扣比价多。但是,看了书中的分析发现,*我们设定的贪心策略实际上是有问题的, ie 在买 5 + 3 本的时候会出错。 看到这里,书上说可以利用改进的贪心算法,感觉如果换了相应的折扣数量,可能又会有不同的结果了。因而,没有深入的研究下去。 既然,贪心算法不可行,那就用动态规划呗。 这里的动态规划思路很简单不过写起来有些复杂。原创 2015-06-12 19:11:33 · 1069 阅读 · 0 评论 -
编程之美之一摞烙饼的排序1
拿到这个问题,第一反应是利用分治的算法思想, 每次把当前的最大的一块烙饼放到指定位置,这样的思想非常简单,实现也非常容易。但是这只是提供了,问题的一个可行解,看完书中的内容之后发现,题目中要求的是最优化的输出过程,我们的这种方法显然没有考虑到优化<-_->!!其实,我觉得就算我看到了这个最优化输出的要求,估计也想不到书中的设计思想的了。过段时间,等自己把书中的思想忘掉之后,再看看能不能想到这种算法思原创 2015-06-11 16:42:49 · 995 阅读 · 1 评论