06 2011 档案

枚举变量扩展
摘要:在很多配置文件中,都会牵涉到变量扩展,一个变量会有多少种可能的扩展结果,这在静态分析中非常重要。这里给出一个算法:使用 perl 来表达(expand.pl),变量引用使用统一的形式:${varname}Whoops, CSDN 竟然不支持 perl code, 用 ruby 做高亮,可能会有点问题#!/usr/bin/env perluse strict;my %vars = ();# cross array arraysub cross_aa($$) { my ($tx, $ty) = @_; my @res = (); for my $x (@$tx) { for my $y (@$t. 阅读全文

posted @ 2011-06-26 00:04 能发波 阅读(166) 评论(0) 推荐(0)

gcc C++0x unique_ptr 实现太龌龊了
摘要:版本:g++ 4.6.0龌龊之处: 1. 占用 2 ptr 空间,因为 unique_ptr 要支持 custom delete, so g++ 要用额外的一个 ptr 来保存 custom 对象 为什么不用 empty base class 来优化? VC10 有这个优化。 2. 引入不必要的依赖,使用 tuple 作为数据成员! 关 tuple 屌事?明白了,使用 tuple 是因为 tuple 实现使用了 empty class optimization, 所以在使用 default deleter 时,只占用 1 ptr, Scott Meyer 说占用 2 ptr... 阅读全文

posted @ 2011-06-17 19:11 能发波 阅读(178) 评论(0) 推荐(0)

C++0x 几个很败的修改
摘要:Until November 2009, std::future was named std::unique_futureUntil November 2010, std::launch::deferred was named std::launch::sync. 阅读全文

posted @ 2011-06-17 17:40 能发波 阅读(110) 评论(0) 推荐(0)

非对称类型的 Comparator
摘要:结构体数组,按字段查找我有一个按字段 name 排好序的结构体数组,怎样使用 stl 来查找?struct User { std::string name; std::string address; //more fields...};//....std::vector v;// expected searching codeauto i = std::lower_bound(v.begin(), v.end(), "whinah", CompareName());怎样定义 CompareName ?struct CompareName { bool operator(.. 阅读全文

posted @ 2011-06-13 11:38 能发波 阅读(116) 评论(0) 推荐(0)

terminal 的显示编码为 utf8 时用 vim 打开 gb2312/gbk/gb18030 编码的文件
摘要:vim "+e ++enc=gbk filename"vim "+e ++enc=cp936 filename" 阅读全文

posted @ 2011-06-11 18:39 能发波 阅读(217) 评论(0) 推荐(0)

怎样区分 const char* 和字符串文字量
摘要:在一个面试中,猛然间一闪念,问到了 candidate 这个问题。无解……stl 中使用到了很多 traits 技术,只要懂得 traits ,这个问题就太简单了!以下是代码示例:软件工程中很多地方,如果采用直接的办法不能解决问题,增加一个间接层,问题即迎刃而解,type_traits 就是这样一种技术,这个代码示例是自包含的,除了 printf ,没有任何其它外部依赖。#include struct true_{};struct false_{};template struct isarray;templatestruct isarray { typedef true_ type; };t. 阅读全文

posted @ 2011-06-04 19:22 能发波 阅读(254) 评论(0) 推荐(0)

导航