寫(xiě)了幾天代碼,怕自己沒(méi)頭沒(méi)腦一直寫(xiě)下去
還是乖乖的跑去圖書(shū)館看書(shū)
下面都是一些片段,都是自己覺(jué)得有意思的地方,所以還是記下來(lái)比較好
TC++PL 15.4.5
Object過(guò)于一般,因?yàn)樗⒉粚?duì)應(yīng)于應(yīng)用領(lǐng)域中的任何抽象,還迫使應(yīng)用程序員去使用一個(gè)實(shí)現(xiàn)層的抽象。解決這類問(wèn)題的更好方式是使用容器模板,在其中只保存某一類指針……
TC++PL 15.5
然而,一個(gè)指向成員的指針并不像指向一個(gè)變量或者指向一個(gè)函數(shù)的指針,它并不是一個(gè)指向一塊內(nèi)存的指針。這種指針更像是一個(gè)結(jié)構(gòu)里的偏移量,或者到一個(gè)數(shù)組里的下標(biāo)。
這也很好的解釋了
typedef (Class::*mem_fun_ptr)(argus..);
的mem_fun_ptr要和一個(gè)class的實(shí)體結(jié)合使用…… 就像把這個(gè) 偏移量 施加在這個(gè) 結(jié)構(gòu)體 上
mem_fun_ptr mfptr = &Class::one_mem_fun;
Class *p = new Class;
Class instance;
(p->*mfptr)();
TC++PL 18.4.4.1
注釋中的 Curring化 正是OwnWaterloo學(xué)長(zhǎng)正在做的callback_curring ..
f(x,y) 看作 f(x)(y)
TC++PL 17.4.1末尾
std::map::inserat(val)返回std::pair<iterator,bool>
如果val被實(shí)際插入(可能由于已經(jīng)存在的key不能插入)那么bool為true。迭代器引用的是map中的一個(gè)元素,
它保存著val的關(guān)鍵嗎val.first。
TC++PL 17.4.2
關(guān)于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;
}
關(guān)于tri的hash_map,boost是一個(gè)好東西
相對(duì)于utility pack來(lái)升級(jí)支持tr1使用boost反而有更好的移植性
#include <boost/tr1/unordered_map.hpp>
std::tr1::unordered_map<key_type,val_type> hashmap;
TC++PL 17章忠告中第10條
盡量使用最小的操作集合,以取得最大的靈活性
------------------------
標(biāo)準(zhǔn)庫(kù)容器中的元素必須可以復(fù)制
在使用 noncopyable 的時(shí)候應(yīng)該注意這一點(diǎn)
posted on 2009-03-26 22:50
Charlie 侯杰 閱讀(1805)
評(píng)論(4) 編輯 收藏 引用