
常用功能代码
文章平均质量分 81
shenxiaolong_code
enjoy C++ and meta-programming, form STL to MPL
展开
-
编译期assert函数
编译期assert函数的目的在于当条件不满足时,阻止编译,从而防止错误的逻辑通过编辑。而运行期assert的目的在于运行时发现条件不满足时,产生一个Debug事件(DebugBreak),从而让调试器停下来方便用户检查原因。 需求描述有些比较关系,我们期望在编译期就能确保正确,需求情形:比如A,B,我们要求编译期就能保证A>B,否则编译不能通过。很明显,如果使用普通原创 2013-10-10 10:57:47 · 3094 阅读 · 0 评论 -
简单地使用sym*函数族导出函数栈(Based on x86)
在有时我们需要导致当前线程的函数栈调用,但是我们又不期望自己来实现这个功能,下面的源代码可以帮你解决。导出函数栈其实就是sym*函数族的应用,该函数在dbghelp.dll中的,下面只是实现了简单的用法,使用的缺省的符号搜索路径,没有设置用户自定义的搜索路径:这样有两方面的考虑: 1. 这不是一个GUI程序,不想让使用者觉得麻烦,这里更合适的说法是提供了一个函数供用户调用。2.一般原创 2013-10-08 11:05:50 · 1428 阅读 · 0 评论 -
左移/右移指定位数字符串 (算法http://blog.youkuaiyun.com/v_JULY_v/article/details/6322882 的实现)
以下内容来自于http://blog.youkuaiyun.com/v_JULY_v/article/details/6322882v_JULY_v博主提供了非常精妙的算法原理,佩服。但是我个人觉得算法的实现稍显麻烦,看那些算法的实现看得很头疼。我依据博主的算法,写出了下面的实现。实现原理:同博主所言,所谓的字符串左移/右移,就是交换字符串的两部分而已。所以下面的算法实现中,除了最终的一次原创 2013-10-11 09:45:39 · 1851 阅读 · 0 评论 -
产生及判断NaN及INFINITE数值
本人工作中经常需要用到NaN及Inf浮点数,原来使用是IBM公司封装的CDecfloat数据类型,后来发现这个数据类型的许多缺点:1. 数据类型size太大,浪费内存:这个数据类型用来表示浮点数,在x86 32位机器上竟然需要100多个字节。 (浮点数只需要4字节啊,IBM的大神们)2. 操作效率低下,来回和string相倒换,有时候完全没有必要。3. rescale后,原有的数值原创 2013-12-02 13:00:50 · 12315 阅读 · 0 评论 -
反转单向链表的实现
单向链接的反转往往会拿来考验人的基本逻辑,因为其中几个变量的初始化和更新稍微考虑疏漏一点儿就出错。下面的算法提供了一个简洁的实现,不用再考虑那几个变量的初始化及更新了。//反转单向链表的实现。templateT* reverseSingleList(T* pHead, T* T::*pNext,T*& pNewHead){ if (原创 2013-10-14 09:36:14 · 1018 阅读 · 0 评论 -
遍历所有时区的代码[windows]
window要没有提供遍历时区的代码,只提供了一些接口,让用户自己从注册表中遍历。比较麻烦,下面代码把这个功能封装了一下,让用户可以比较简单地处理所有时区。其中字符串用的是core::cstringex,大家可以用STD里面的字符串来代替,core::datetime里的数据结构体和SYSTEMTIME一样,大家可以把SYSTEMTIME封装一下就可以替换它了。//timezone.h原创 2013-10-10 10:15:47 · 1408 阅读 · 0 评论