10 2013 档案
摘要:1.编译器断言技巧大致跟后面的一样,都是利用偏特化,但是在C++ 0X里面已经有static_assert,所以感觉这东西也没什么用处了,更多的只是开阔眼界2.偏特化就是专门对一个类型去进行特殊的处理,毕竟template会给生成所有的类型相同的操作,但是有时候我们需要对特定的几个类型去处理,于是就有了特化和偏特化3.局部类一直被忽略的C++的语法,可以直接在类或者函数里面定义类,不过一直被忽视就对了,感觉这个还是挺有意思的4.常数映射为型别:template struct Int2Type{ enum { value = v;}}这样的话,每次用不同的数字去实例化Int2Type...
阅读全文
摘要:http://blog.csdn.net/zhoudaxia/article/details/4486487这篇博客讲得挺清楚的,本来想自己写写看总结下的,不过看了下这个文章已经写得很清楚了,倒没有必要了,总得来说,要了解traits和policy,需要了解下面这三个点1.什么是特化,什么是偏特化顾名思义,特化就是针对一些特殊的类型进行变化,毕竟C++的模板是什么类型都能放进去的,但是有些类型就是比较独特,需要做特别的处理,这个就有了特化和偏特化,在这篇博客中作者特化了AccumulationTraits的int和char2.利用typedef来抽象数据类型当要把两个类中的不同的类型统一成一种
阅读全文
摘要:1.lambda表达式lanbda表达式简单地来讲就是一个匿名函数,就是没有名称的函数,如果以前有接触过python或者erlang的人都比较熟悉这个,这个可以很方便地和STL里面的算法配合 std::for_each(list.begin(),list.end(), [ &tmp,id ](struct ComingVesselInfo *info) { if( info->m_nShipID == id) { ...
阅读全文
摘要:这段时间一直在修改项目的BUG,有一些BUG是以前自己留下来,无意中也发现了好多个内存泄露的问题,当然更多的是资源清理不干净,虽然不会导致内存无限增长,但是对于程序来说都不是什么好事情 犯这些错误的原因很简单,就是因为我们采用的开发库有一个库会有内存泄露,而且不少,所以在程序结束后VS会有提示一大段
阅读全文
摘要:match和findall的区别以及有括号和无括号的区别strvar = "hello\n\nworld"find_re = re.compile("hello[.|\n]*([\S]*)");rs = find_re.match(strvar);print rs.groups()#输出('world',)rs = find_re.findall(strvar);for x in rs: print x;#输出worldmatch是查找到匹配的字符串,也就是括号内的字符串,match应该是从一个字符串里面过滤出我们括号内需要的字符串,所以
阅读全文
摘要:国庆这两天在家里看了>,加上之前看过>和>这两本书,总觉得原来高端的东西似乎也没那么神秘,里面的模式自己在工作中也都用到过,并没有怎么特意地去学习,都是自己写代码总结出来的,看了三本设计模式的书,最终记住的模式也没几个,或者说,最终自己也没学到什么东西谈设计模式一定要谈到面向对象,面向对象的本质是多态,封装和继承,设计模式则能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力更多的来看,设计模式更像是对于面向对象编程的一种补充,是为了代码的重用性、灵活性和扩展性。但是,不管是重用,灵活,扩展,最起码的基本要求是代码的可读性为
阅读全文