寫了幾天代碼,怕自己沒頭沒腦一直寫下去
還是乖乖的跑去圖書館看書
下面都是一些片段,都是自己覺得有意思的地方,所以還是記下來比較好
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 侯杰 閱讀(1803)
評論(4) 編輯 收藏 引用