Item1: vector的使用 JG問(wèn)題:void f(vector<int>& v) {???v[0] = 1;???// A?? v[1] = 2;???// B}GURU問(wèn)題:
以上代碼有諸如以下的建議:1> 盡量使用const.未修改v中的內(nèi)容,可使用const_iterator;2> 盡量使用!=而不用<來(lái)比較迭代器。 != 對(duì)任何迭代器都有效,而< 只對(duì)隨機(jī)訪問(wèn)迭代器有效。list不支持<;3> 盡量使用++前綴,而非后綴。可以從++前后綴的實(shí)現(xiàn)代碼中得知,除非一些特殊場(chǎng)合;4> 避免無(wú)謂的重復(fù)求值。v.end()函數(shù)在重復(fù)求值,而整個(gè)循環(huán)期間都未改變。除非end()被編譯器進(jìn)行內(nèi)聯(lián),無(wú)調(diào)用開(kāi)銷,最好是將其提到循環(huán)外面;5> 盡量使用'\n'而非endl。原因在于endl會(huì)迫使輸出流刷新其內(nèi)部緩沖區(qū),可以在整個(gè)循環(huán)之后寫(xiě)一個(gè)刷新語(yǔ)句。6> 盡量使用標(biāo)準(zhǔn)庫(kù)中算法. 如copy()、for_each()。例如這里就可以這樣寫(xiě):copy(v.begin(), v.end(), ostream_iterator<int>(cout, '\n'));這樣一來(lái)也避免了1>?~ 5的麻煩。
// zero
posted on 2006-10-14 15:05 Zero Lee 閱讀(3241) 評(píng)論(0) 編輯 收藏 引用 所屬分類: C++ Performance
Powered by: C++博客 Copyright © Zero Lee