
C++
文章平均质量分 95
超然_烟火
超然于物外 烟火于一瞬
展开
-
单例模式(单一实例) C++版本
C++实现的单例模式,在面试题中出现的很多,其中主要有以下几点需要注意:1 默认构造函数私有化2 拷贝构造函数私有化3 提供静态的公有函数,获取单一实例(同时提供释放函数)4 声明静态的私有单一实例指针,以及在全局代码中进行初始化的工作以下是具体的代码,实现了单线程下的单例模式,同时演示了多线程下的单一实例创建代码class CSingle{pr原创 2013-04-01 10:28:08 · 1680 阅读 · 0 评论 -
自定义结构体做为map里面的key的写法
其中一种写法:struct hook_info { string lib_name; string fun_name; int param_count; bool bIATHook; hook_info(char *lib, char* fun, int param, bool b) { lib_name原创 2014-01-19 13:31:38 · 2796 阅读 · 1 评论 -
【题解】英雄会第二届在线编程大赛·优快云现场决赛:三元组的数量
int g_array[1+5000000] = {0};// x(4y-x) = Nint num2(int a, int b) { int ret = 0; memset(g_array, 0, sizeof(g_array)); int max = (int)sqrt((double)b); for (int x = 1; x <= max; x++) {原创 2014-01-01 10:53:57 · 1273 阅读 · 0 评论 -
vim 自动提示、自动补齐插件 YouCompleteMe for windows Gvim 安装及使用效果
YouCompleteMe 插件官方网站 http://val.markovic.io/blog/youcompleteme-a-fast-as-you-type-fuzzy-search-code-completion-engine-for-vimgithub地址 https://github.com/Valloric/YouCompleteMe效果演示实际使用效果图1,来自官网原创 2014-01-18 23:02:49 · 18980 阅读 · 42 评论 -
【庞果英雄会】最小操作数
给了A、B两个单词和一个单词集合Dict,每个的长度都相同。我们希望通过若干次操作把单词A变成单词B,每次操作可以改变单词中的一个字母,同时,新产生的单词必须是在给定的单词集合Dict中。求所有行得通步数最少的修改方法。 举个例子如下: Given: A = "hit" B = "cog" Dict = ["hot","dot","dog","lot","log原创 2013-07-14 21:32:24 · 2806 阅读 · 5 评论 -
几种二分查找算法的代码和比较
二分查找的4种代码写法原创 2013-08-06 21:50:33 · 2234 阅读 · 0 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——4 构造DFA
整个引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.git接上篇《正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——3 计算4个函数》本章将介绍如何使用followpos集合来构建DFA。相关算法和例子在龙书中文第二版的3.9.5节(根据正则表达式构建DFA),算法3.36和例3.原创 2013-06-26 20:40:43 · 2789 阅读 · 1 评论 -
动态规划算法
前言最近帮同学写一个程序,给出100多个金额,用数组表示为money[1-100],再给出一个数额SUM。如果money数组里面有哪几项之和等于SUM,那么这几项就是符合条件的一个组合。现在需要做的是,找出所有符合要求的组合。举一个简单的例子,假设money为{1,1,2,3,4},和为6的所有组合为1+1+4, 1+2+3,1+2+3,2+4。对于我同学给的这个程序要求,不算原创 2013-06-21 14:38:46 · 3318 阅读 · 0 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——3 计算4个函数
整个引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.gitnullable, firstpos, lastpos, followpos函数介绍接着上两篇文章《正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——1 概述》《正则表达式引擎的构建——基于编译原理DFA(龙原创 2013-06-24 13:32:01 · 3536 阅读 · 0 评论 -
哪些东西必须放在构造函数的初始化列表中?
以下几种情况时必须使用初始化列表:1 常量成员,因为常量只能初始化不能赋值,所以必须放在初始化列表里面2 引用类型,引用必须在定义的时候初始化,并且不能重新赋值,所以也要写在初始化列表里面3 没有默认构造函数的类类型,因为使用初始化列表可以不必调用默认构造函数来初始化,而是直接调用拷贝构造函数初始化。针对上面3种情况,写代码测试结果如下:class CBase{pu原创 2013-07-08 20:40:47 · 2072 阅读 · 0 评论 -
多平台工程生成工具CMAKE如何创建VS工程组——folder属性
CMAKE是什么?一种将源码根据配置文件生成编译工程的工具。以下是来自CMAKE官方的介绍(www.cmake.org): the cross-platform, open-source build system. CMake is a family of tools designed to build, test and package software. CMake is us原创 2013-07-07 22:04:57 · 3962 阅读 · 0 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——2 构造抽象语法树
简要介绍 构造抽象语法树是构造基于DFA的正则表达式引擎的第一步。目前在我实现的这个正则表达式的雏形中,正则表达式的运算符有3种,表示选择的|运算符,表示星号运算的*运算符,表示连接的运算符cat(在实际正则表达式中被省去)。例如对于正则表达式a*b|c,在a*和b之间省略了连接运算符cat。其中|、cat运算符是双目运算符,*运算符是单目运算符。下图来自编译原理一书:原创 2013-06-09 16:59:47 · 5866 阅读 · 0 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——1 概述
说明:本系列文章介绍的算法均来自编译原理(龙书)一书,如果读者对代码没有兴趣,只想了解算法思路,完全可以阅读龙书相关章节内容,比我讲得清晰透彻。序: 啃编译原理半年以来,任然徘徊在前4章,其间反反复复,时而不求甚解,时而略有所悟。后来接触到正则表达式,对其实现原理颇有兴趣,于是百度之、谷歌之,以求解惑。先是搜索到不少国内发表的学术论文和各位大侠博客上的文章,后又通原创 2013-06-09 14:00:32 · 5362 阅读 · 0 评论 -
【庞果网英雄会】4月第4次面试集训#字符串#:字符串匹配问题
题目详情字符串匹配问题,给定一串字符串,按照指定规则对其进行匹配,并将匹配的结果保存至output数组中,多个匹配项用空格间隔,最后一个不需要空格。要求:匹配规则中包含通配符?和*,其中?表示匹配任意一个字符,*表示匹配任意多个(>=0)字符。匹配规则要求匹配最大的字符子串,例如a*d,匹配abbdd而非abbd,即最大匹配子串。匹配后的输入串不再进行匹配,原创 2013-05-15 21:04:29 · 1459 阅读 · 0 评论 -
总结CreateThread与_beginthreadex的区别
一 为什么不直接使用CreateThread而要使用运行库函数_beginthreadex函数二 _beginthreadex函数都干了啥三 _threadstartex函数做了什么工作四 为什么不应该调用ExitThread函数五 不应该使用_beginthread_endthread函数不带ex的两个旧函数对一1中例外的说明看了MoreWindows同学的文章《秒杀多线程原创 2013-04-09 17:59:21 · 2265 阅读 · 0 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——5 DFA最小化
完整引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.gitDFA最小化的算法原理“DFA状态最小化算法的工作原理是将一个DFA的状态集合分划成多个组,每个组中的各个状态之间相互不可区分。然后,将每个组中的状态合并成状态最少DFA的一个状态。算法在执行过程中维护了状态集合的一个分划原创 2013-07-18 23:39:23 · 3384 阅读 · 2 评论