posts - 23,  comments - 94,  trackbacks - 0
写了几天代码,怕自己没头没脑一直写下去
还是乖乖的跑去图书馆看书

下面都是一些片段,都是自己觉得有意思的地方,所以还是记下来比较好

TC++PL 15.4.5
Object过于一般,因为它并不对应于应用领域中的任何抽象,还迫使应用程序员去使用一个实现层的抽象。解决这类问题的更好方式是使用容器模板,在其中只保存某一类指针……

TC++PL 15.5
然而,一个指向成员的指针并不像指向一个变量或者指向一个函数的指针,它并不是一个指向一块内存的指针。这种指针更像是一个结构里的偏移量,或者到一个数组里的下标。

这也很好的解释了

typedef (Class::*mem_fun_ptr)(argus..);
的mem_fun_ptr要和一个class的实体结合使用…… 就像把这个 偏移量 施加在这个 结构体 上

mem_fun_ptr mfptr = &Class::one_mem_fun;

Class *p = new Class;
Class instance;

(p->*mfptr)();

TC++PL 18.4.4.1
注释中的 Curring化 正是OwnWaterloo学长正在做的callback_curring ..

f(x,y) 看作 f(x)(y)

TC++PL 17.4.1末尾

std::map::inserat(val)返回std::pair<iterator,bool>
如果val被实际插入(可能由于已经存在的key不能插入)那么bool为true。迭代器引用的是map中的一个元素,
它保存着val的关键吗val.first。

TC++PL 17.4.2
关于multimap中查找某key得到的返回值

void print_numbers(const multimap<string,int>& phone_book)
{
    typedef multimap<string,int>::const_iterator I;
    pair<I,I> result = phone_book.equal_range("name");
    for (I i = result.first; i!=b.second; ++i) cout<<i->second<<endl;
}

关于tri的hash_map,boost是一个好东西
相对于utility pack来升级支持tr1使用boost反而有更好的移植性
#include <boost/tr1/unordered_map.hpp>

std::tr1::unordered_map<key_type,val_type> hashmap;

TC++PL 17章忠告中第10条
尽量使用最小的操作集合,以取得最大的灵活性

------------------------

标准库容器中的元素必须可以复制
在使用 noncopyable 的时候应该注意这一点

posted on 2009-03-26 22:50 Charlie 侯杰 阅读(1787) 评论(4)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


by Charlie