写了几天代码,怕自己没头没脑一直写下去
还是乖乖的跑去图书馆看书
下面都是一些片段,都是自己觉得有意思的地方,所以还是记下来比较好
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) 编辑 收藏 引用