锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久99国产精品一区二区,亚洲中文字幕无码久久2020,日韩精品久久久久久免费http://m.shnenglu.com/true/category/3801.htmlzh-cnMon, 19 May 2008 13:43:45 GMTMon, 19 May 2008 13:43:45 GMT60stl綆楁硶http://m.shnenglu.com/true/archive/2007/04/19/22309.htmltruetrueThu, 19 Apr 2007 07:47:00 GMThttp://m.shnenglu.com/true/archive/2007/04/19/22309.htmlhttp://m.shnenglu.com/true/comments/22309.htmlhttp://m.shnenglu.com/true/archive/2007/04/19/22309.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/22309.htmlhttp://m.shnenglu.com/true/services/trackbacks/22309.html

Center of STL Study

鈥斺旀渶浼樼鐨凷TL瀛︿範緗戠珯

鏉℃45錛氭敞鎰廲ount銆乫ind銆乥inary_search銆乴ower_bound銆乽pper_bound鍜宔qual_range鐨勫尯鍒?/h2>

浣犺瀵繪壘浠涔堬紝鑰屼笖浣犳湁涓涓鍣ㄦ垨鑰呬綘鏈変竴涓敱榪唬鍣ㄥ垝鍒嗗嚭鏉ョ殑鍖洪棿鈥斺斾綘瑕佹壘鐨勪笢瑗垮氨鍦ㄩ噷闈€備綘瑕佹庝箞瀹屾垚鎼滅儲鍛紵浣犵琚嬩腑鐨勭鏈夎繖浜涳細count銆乧ount_if銆乫ind銆乫ind_if銆乥inary_search銆乴ower_bound銆乽pper_bound鍜宔qual_range銆傞潰瀵圭潃瀹冧滑錛屼綘瑕佹庝箞鍋氬嚭閫夋嫨錛?/p>

綆鍗曘備綘瀵繪壘鐨勬槸鑳藉張蹇張綆鍗曠殑涓滆タ銆傝秺蹇秺綆鍗曠殑瓚婂ソ銆?/p>

鏆傛椂錛屾垜鍋囪浣犳湁涓瀵規寚瀹氫簡鎼滅儲鍖洪棿鐨勮凱浠e櫒銆傜劧鍚庯紝鎴戜細鑰冭檻鍒頒綘鏈夌殑鏄竴涓鍣ㄨ屼笉鏄竴涓尯闂寸殑鎯呭喌銆?/p>

瑕侀夋嫨鎼滅儲絳栫暐錛屽繀欏諱緷璧栦簬浣犵殑榪唬鍣ㄦ槸鍚﹀畾涔変簡涓涓湁搴忓尯闂淬傚鏋滄槸錛屼綘灝卞彲浠ラ氳繃binary_search銆乴ower_bound銆乽pper_bound鍜宔qual_range鏉ュ姞閫燂紙閫氬父鏄鏁版椂闂粹斺斿弬瑙?a >鏉℃34錛夋悳绱€傚鏋滆凱浠e櫒騫舵病鏈夊垝鍒嗕竴涓湁搴忓尯闂達紝浣犲氨鍙兘鐢ㄧ嚎鎬ф椂闂寸殑綆楁硶count銆乧ount_if銆乫ind鍜宖ind_if銆傚湪涓嬫枃涓紝鎴戜細蹇界暐鎺塩ount鍜宖ind鏄惁鏈塤if鐨勪笉鍚岋紝灝卞儚鎴戜細蹇界暐鎺塨inary_search銆乴ower_bound銆乽pper_bound鍜宔qual_range鏄惁甯︽湁鍒ゆ柇寮忕殑涓嶅悓銆備綘鏄緷璧栭粯璁ょ殑鎼滅儲璋撹瘝榪樻槸鎸囧畾涓涓嚜宸辯殑錛屽閫夋嫨鎼滅儲綆楁硶鐨勮冭檻鏄竴鏍風殑銆?/p>

濡傛灉浣犳湁涓涓棤搴忓尯闂達紝浣犵殑閫夋嫨鏄痗ount鎴栫潃find銆傚畠浠垎鍒彲浠ュ洖絳旂暐寰笉鍚岀殑闂錛屾墍浠ュ煎緱浠旂粏鍘誨尯鍒嗗畠浠俢ount鍥炵瓟鐨勯棶棰樻槸錛?#8220;鏄惁瀛樺湪榪欎釜鍊鹼紝濡傛灉鏈夛紝閭d箞瀛樺湪鍑犱喚鎷瘋礉錛?#8221;鑰宖ind鍥炵瓟鐨勯棶棰樻槸錛?#8220;鏄惁瀛樺湪錛屽鏋滄湁錛岄偅涔堝畠鍦ㄥ摢鍎匡紵”

鍋囪浣犳兂鐭ラ亾鐨勪笢瑗挎槸錛屾槸鍚︽湁涓涓壒瀹氱殑Widget鍊紈鍦╨ist涓傚鏋滅敤count錛屼唬鐮佺湅璧鋒潵鍍忚繖鏍鳳細

list<Widget> lw;			// Widget鐨刲ist
Widget w;				// 鐗瑰畾鐨刉idget鍊?
...
if (count(lw.begin(), lw.end(), w)) {
...			// w鍦╨w涓?
} else {
...			// 涓嶅湪
}

榪欓噷紺鴻寖浜嗕竴縐嶆儻鐢ㄦ硶錛氭妸count鐢ㄦ潵浣滀負鏄惁瀛樺湪鐨勬鏌ャ俢ount榪斿洖闆舵垨鑰呬竴涓鏁幫紝鎵浠ユ垜浠妸闈為浂杞寲涓簍rue鑰屾妸闆惰漿鍖栦負false銆傚鏋滆繖鏍瘋兘浣挎垜浠鍋氱殑鏇村姞鏄捐屾槗瑙侊細

if (count(lw.begin(), lw.end(), w) != 0) ...

鑰屼笖鏈変簺紼嬪簭鍛樿繖鏍峰啓錛屼絾鏄嬌鐢ㄩ殣寮忚漿鎹㈠垯鏇村父瑙侊紝灝卞儚鏈鍒濈殑渚嬪瓙銆?/p>

鍜屾渶鍒濈殑浠g爜姣旇緝錛屼嬌鐢╢ind鐣ュ井鏇撮毦鎳備簺錛屽洜涓轟綘蹇呴』媯鏌ind鐨勮繑鍥炲煎拰list鐨別nd榪唬鍣ㄦ槸鍚︾浉絳夛細

if (find(lw.begin(), lw.end(), w) != lw.end()) {
...				// 鎵懼埌浜?
} else {
...				// 娌℃壘鍒?
}

濡傛灉鏄負浜嗘鏌ユ槸鍚﹀瓨鍦紝count榪欎釜鎯敤娉曠紪鐮佽搗鏉ユ瘮杈冪畝鍗曘備絾鏄紝褰撴悳绱㈡垚鍔熸椂錛屽畠鐨勬晥鐜囨瘮杈冧綆錛屽洜涓哄綋鎵懼埌鍖歸厤鐨勫煎悗find灝卞仠姝簡錛岃宑ount蹇呴』緇х畫鎼滅儲錛岀洿鍒板尯闂寸殑緇撳熬浠ュ鎵懼叾浠栧尮閰嶇殑鍊箋傚澶у鏁扮▼搴忓憳鏉ヨ錛宖ind鍦ㄦ晥鐜囦笂鐨勪紭鍔胯凍浠ヨ瘉鏄庣暐寰鍔犲鏉傚害鏄悎閫傜殑銆?/p>

閫氬父錛屽彧鐭ラ亾鍖洪棿鍐呮槸鍚︽湁鏌愪釜鍊兼槸涓嶅鐨勩傚彇鑰屼唬涔嬬殑鏄紝浣犳兂鑾峰緱鍖洪棿涓殑絎竴涓瓑浜庤鍊肩殑瀵硅薄銆傛瘮濡傦紝浣犲彲鑳芥兂鎵撳嵃鍑鴻繖涓璞★紝浣犲彲鑳芥兂鍦ㄥ畠鍓嶉潰鎻掑叆浠涔堬紝鎴栬呬綘鍙兘鎯寵鍒犻櫎瀹冿紙浣嗗綋榪唬鏃跺垹闄ょ殑寮曞鍙傝鏉℃9錛夈傚綋浣犻渶瑕佺煡閬撶殑涓嶆鏄煇涓兼槸鍚﹀瓨鍦紝鑰屼笖瑕佺煡閬撳摢涓璞★紙鎴栧摢浜涘璞★級鎷ユ湁璇ュ鹼紝浣犲氨寰楃敤find錛?/p>

list<Widget>::iterator i = find(lw.begin(), lw.end(), w);
if (i != lw.end()) {
...				// 鎵懼埌浜嗭紝i鎸囧悜絎竴涓?
} else {
...				// 娌℃湁鎵懼埌
}

瀵逛簬鏈夊簭鍖洪棿錛屼綘鏈夊叾浠栫殑閫夋嫨錛岃屼笖浣犲簲璇ユ槑紜殑浣跨敤瀹冧滑銆俢ount鍜宖ind鏄嚎鎬ф椂闂寸殑錛屼絾鏈夊簭鍖洪棿鐨勬悳绱㈢畻娉曪紙binary_search銆乴ower_bound銆乽pper_bound鍜宔qual_range錛夋槸瀵規暟鏃墮棿鐨勩?/p>

浠庢棤搴忓尯闂磋縼縐誨埌鏈夊簭鍖洪棿瀵艱嚧浜嗗彟涓涓縼縐伙細浠庝嬌鐢ㄧ浉絳夋潵鍒ゆ柇涓や釜鍊兼槸鍚︾浉鍚屽埌浣跨敤絳変環鏉ュ垽鏂?a >鏉℃19鐢變竴涓緇嗗湴璁茶堪浜嗙浉絳夊拰絳変環鐨勫尯鍒紝鎵浠ユ垜鍦ㄨ繖閲屼笉浼氶噸澶嶃傚彇鑰屼唬涔嬬殑鏄紝鎴戜細綆鍗曞湴璇存槑count鍜宖ind綆楁硶閮界敤鐩哥瓑鏉ユ悳绱紝鑰宐inary_search銆乴ower_bound銆乽pper_bound鍜宔qual_range鍒欑敤絳変環銆?/p>

瑕佹祴璇曞湪鏈夊簭鍖洪棿涓槸鍚﹀瓨鍦ㄤ竴涓鹼紝浣跨敤binary_search銆備笉鍍忔爣鍑咰搴撲腑鐨勶紙鍥犳涔熸槸鏍囧噯C++搴撲腑鐨勶級bsearch錛宐inary_search鍙繑鍥炰竴涓猙ool錛氳繖涓兼槸鍚︽壘鍒頒簡銆俠inary_search鍥炵瓟榪欎釜闂錛?#8220;瀹冨湪鍚楋紵”瀹冪殑鍥炵瓟鍙兘鏄槸鎴栬呭惁銆傚鏋滀綘闇瑕佹瘮榪欐牱鏇村鐨勪俊鎭紝浣犻渶瑕佷竴涓笉鍚岀殑綆楁硶銆?/p>

榪欓噷鏈変竴涓猙inary_search搴旂敤浜庢湁搴弙ector鐨勪緥瀛愶紙浣犲彲浠ヤ粠鏉℃23涓煡閬撴湁搴弙ector鐨勪紭鐐癸級錛?/p>

vector<Widget> vw;			// 寤虹珛vector錛屾斁鍏?
...				// 鏁版嵁錛?
sort(vw.begin(), vw.end());		// 鎶婃暟鎹帓搴?
Widget w;				// 瑕佹壘鐨勫?
...
if (binary_search(vw.begin(), vw.end(), w)) {
...			// w鍦╲w涓?
} else {
...			// 涓嶅湪
}

濡傛灉浣犳湁涓涓湁搴忓尯闂磋屼笖浣犵殑闂鏄細“瀹冨湪鍚楋紝濡傛灉鏄紝閭d箞鍦ㄥ摢鍎匡紵”浣犲氨闇瑕乪qual_range錛屼絾浣犲彲鑳芥兂瑕佺敤lower_bound銆傛垜浼氬緢蹇璁篹qual_range錛屼絾棣栧厛錛岃鎴戜滑鐪嬬湅鎬庝箞鐢╨ower_bound鏉ュ湪鍖洪棿涓畾浣嶆煇涓箋?/p>

褰撲綘鐢╨ower_bound鏉ュ鎵句竴涓肩殑鏃跺欙紝瀹冭繑鍥炰竴涓凱浠e櫒錛岃繖涓凱浠e櫒鎸囧悜榪欎釜鍊肩殑絎竴涓嫹璐濓紙濡傛灉鎵懼埌鐨勮瘽錛夋垨鑰呭埌鍙互鎻掑叆榪欎釜鍊肩殑浣嶇疆錛堝鏋滄病鎵懼埌錛夈傚洜姝ower_bound鍥炵瓟榪欎釜闂錛?#8220;瀹冨湪鍚楋紵濡傛灉鏄紝絎竴涓嫹璐濆湪鍝噷錛熷鏋滀笉鏄紝瀹冨皢鍦ㄥ摢閲岋紵”鍜宖ind涓鏍鳳紝浣犲繀欏繪祴璇昹ower_bound鐨勭粨鏋滐紝鏉ョ湅鐪嬪畠鏄惁鎸囧悜浣犺瀵繪壘鐨勫箋備絾鍙堜笉鍍廸ind錛屼綘涓嶈兘鍙槸媯嫻媗ower_bound鐨勮繑鍥炲兼槸鍚︾瓑浜巈nd榪唬鍣ㄣ傚彇鑰屼唬涔嬬殑鏄紝浣犲繀欏繪嫻媗ower_bound鎵鏍囩ず鍑虹殑瀵硅薄鏄笉鏄綘闇瑕佺殑鍊箋?/p>

寰堝紼嬪簭鍛樿繖涔堢敤lower_bound錛?/p>

vector<Widget>::iterator i = lower_bound(vw.begin(), vw.end(), w);
if (i != vw.end() && *i == w) {	// 淇濊瘉i鎸囧悜涓涓璞★紱
// 涔熷氨淇濊瘉浜嗚繖涓璞℃湁姝g‘鐨勫箋?
// 榪欐槸涓猙ug錛?
...			// 鎵懼埌榪欎釜鍊鹼紝i鎸囧悜
// 絎竴涓瓑浜庤鍊肩殑瀵硅薄
} else {
...			// 娌℃壘鍒?
}

澶ч儴鍒嗘儏鍐典笅榪欐槸琛屽緱閫氱殑錛屼絾涓嶆槸鐪熺殑瀹屽叏姝g‘銆傚啀鐪嬩竴閬嶆嫻嬮渶瑕佺殑鍊兼槸鍚︽壘鍒扮殑浠g爜錛?/p>

if (i != vw.end() && *i == w) ...

榪欐槸涓涓?em>鐩哥瓑鐨勬祴璇曪紝浣唋ower_bound鎼滅儲鐢ㄧ殑鏄?em>絳変環銆傚ぇ閮ㄥ垎鎯呭喌涓嬶紝絳変環嫻嬭瘯鍜岀浉絳夋祴璇曚駭鐢熺殑緇撴灉鐩稿悓錛屼絾灝卞儚鏉℃19璁鴻瘉鐨勶紝鐩哥瓑鍜岀瓑浠風殑緇撴灉涓嶅悓鐨勬儏鍐靛茍涓嶉毦瑙佸埌銆傚湪榪欑鎯呭喌涓嬶紝涓婇潰鐨勪唬鐮佸氨鏄敊鐨勩?/p>

瑕佸畬鍏ㄥ畬鎴愶紝浣犲氨蹇呴』媯嫻媗ower_bound榪斿洖鐨勮凱浠e櫒鎸囧悜鐨勫璞$殑鍊兼槸鍚﹀拰浣犺瀵繪壘鐨勫肩瓑浠楓備綘鍙互鎵嬪姩瀹屾垚錛?a >鏉℃19婕旂ず浜嗕綘璇ユ庝箞鍋氾紝褰撳畠鍊煎緱涓鍋氭椂鏉℃24鎻愪緵浜嗕竴涓緥瀛愶級錛屼絾鍙互鏇寸嫛鐚懼湴瀹屾垚錛屽洜涓轟綘蹇呴』紜浣跨敤浜嗗拰lower_bound浣跨敤鐨勭浉鍚岀殑姣旇緝鍑芥暟銆備竴鑸岃█錛岄偅鍙互鏄竴涓換鎰忕殑鍑芥暟錛堟垨鍑芥暟瀵硅薄錛夈傚鏋滀綘浼犻掍竴涓瘮杈冨嚱鏁扮粰lower_bound錛屼綘蹇呴』紜鍜屼綘鐨勬墜鍐欑殑絳変環媯嫻嬩唬鐮佷嬌鐢ㄤ簡鐩稿悓鐨勬瘮杈冨嚱鏁般傝繖鎰忓懗鐫濡傛灉浣犳敼鍙樹簡浣犱紶閫掔粰lower_bound鐨勬瘮杈冨嚱鏁幫紝浣犱篃寰楀浣犵殑絳変環媯嫻嬮儴鍒嗕綔鍑轟慨鏀廣備繚鎸佹瘮杈冨嚱鏁板悓姝ヤ笉鏄伀綆彂灝勶紝浣嗗嵈鏄彟涓涓璁頒綇鐨勪笢瑗匡紝鑰屼笖鎴戞兂浣犲凡緇忔湁寰堝闇瑕佷綘璁扮殑涓滆タ浜嗐?/p>

榪欏効鏈変竴涓畝鍗曠殑鏂規硶錛氫嬌鐢╡qual_range銆俥qual_range榪斿洖涓瀵硅凱浠e櫒錛岀涓涓瓑浜巐ower_bound榪斿洖鐨勮凱浠e櫒錛岀浜屼釜絳変簬upper_bound榪斿洖鐨勶紙涔熷氨鏄紝絳変環浜庤鎼滅儲鍊煎尯闂寸殑鏈凱浠e櫒鐨勪笅涓涓級銆傚洜姝わ紝equal_range錛岃繑鍥炰簡涓瀵瑰垝鍒嗗嚭浜嗗拰浣犺鎼滅儲鐨勫肩瓑浠風殑鍖洪棿鐨勮凱浠e櫒銆備竴涓悕瀛楀緢濂界殑綆楁硶錛屼笉鏄悧錛燂紙褰撶劧錛屼篃璁稿彨equivalent_range浼氭洿濂斤紝浣嗗彨equal_range涔熼潪甯稿ソ銆傦級

瀵逛簬equal_range鐨勮繑鍥炲鹼紝鏈変袱涓噸瑕佺殑鍦版柟銆傜涓錛屽鏋滆繖涓や釜榪唬鍣ㄧ浉鍚岋紝灝辨剰鍛崇潃瀵硅薄鐨勫尯闂存槸絀虹殑錛涜繖涓彧娌℃湁鎵懼埌銆傝繖涓粨鏋滄槸鐢╡qual_range鏉ュ洖絳?#8220;瀹冨湪鍚楋紵”榪欎釜闂鐨勭瓟妗堛備綘鍙互榪欎箞鐢細

vector<Widget> vw;
...
sort(vw.begin(), vw.end());
typedef vector<Widget>::iterator VWIter;	// 鏂逛究鐨則ypedef
typedef pair<VWIter, VWIter> VWIterPair;
VWIterPair p = equal_range(vw.begin(), vw.end(), w);
if (p.first != p.second) {			// 濡傛灉equal_range涓嶈繑鍥?
// 絀虹殑鍖洪棿...
...				// 璇存槑鎵懼埌浜嗭紝p.first鎸囧悜
// 絎竴涓宲.second
// 鎸囧悜鏈鍚庝竴涓殑涓嬩竴涓?
} else {
...				// 娌℃壘鍒幫紝p.first鍜?
// p.second閮芥寚鍚戞悳绱㈠?
}					// 鐨勬彃鍏ヤ綅緗?

榪欐浠g爜鍙敤絳変環錛屾墍浠ユ繪槸姝g‘鐨勩?/p>

絎簩涓娉ㄦ剰鐨勬槸equal_range榪斿洖鐨勪笢瑗挎槸涓や釜榪唬鍣紝瀵瑰畠浠綔distance灝辯瓑浜庡尯闂翠腑瀵硅薄鐨勬暟鐩紝涔熷氨鏄紝絳変環浜庤瀵繪壘鐨勫肩殑瀵硅薄銆傜粨鏋滐紝equal_range涓嶅厜瀹屾垚浜嗘悳绱㈡湁搴忓尯闂寸殑浠誨姟錛岃屼笖瀹屾垚浜嗚鏁般傛瘮濡傝錛岃鍦╲w涓壘鍒扮瓑浠蜂簬w鐨刉idget錛岀劧鍚庢墦鍗板嚭鏉ユ湁澶氬皯榪欐牱鐨刉idget瀛樺湪錛屼綘鍙互榪欎箞鍋氾細

VWIterPair p = equal_range(vw.begin(), vw.end(), w);
cout << "There are " << distance(p.first, p.second)
<< " elements in vw equivalent to w.";

鍒扮洰鍓嶄負姝紝鎴戜滑鎵璁ㄨ鐨勯兘鏄亣璁炬垜浠鍦ㄤ竴涓尯闂村唴鎼滅儲涓涓鹼紝浣嗘槸鏈夋椂鍊欐垜浠洿鎰熷叴瓚d簬鍦ㄥ尯闂翠腑瀵繪壘涓涓綅緗傛瘮濡傦紝鍋囪鎴戜滑鏈変竴涓猅imestamp綾誨拰涓涓猅imestamp鐨剉ector錛屽畠鎸夌収鑰佺殑timestamp鏀懼湪鍓嶉潰鐨勬柟娉曟帓搴忥細

class Timestamp { ... };
bool operator<(const Timestamp& lhs,		// 榪斿洖鍦ㄦ椂闂翠笂lhs
const Timestamp& rhs);		// 鏄惁鍦╮hs鍓嶉潰
vector<Timestamp> vt;			// 寤虹珛vector錛屽~鍏呮暟鎹紝
...					// 鎺掑簭錛屼嬌鑰佺殑鏃墮棿
sort(vt.begin(), vt.end());			// 鍦ㄦ柊鐨勫墠闈?

鐜板湪鍋囪鎴戜滑鏈変竴涓壒孌婄殑timestamp鈥斺攁geLimit錛岃屼笖鎴戜滑浠巚t涓垹闄ゆ墍鏈夋瘮ageLimit鑰佺殑timestamp銆傚湪榪欑鎯呭喌涓嬶紝鎴戜滑涓嶉渶瑕佸湪vt涓悳绱㈠拰ageLimit絳変環鐨凾imestamp錛屽洜涓哄彲鑳戒笉瀛樺湪浠諱綍絳変環浜庤繖涓簿紜肩殑鍏冪礌銆?鍙栬屼唬涔嬬殑鏄紝鎴戜滑闇瑕佸湪vt涓壘鍒頒竴涓綅緗細絎竴涓笉姣攁geLimit鏇磋佺殑鍏冪礌銆傝繖鏄啀綆鍗曚笉榪囩殑浜嗭紝鍥犱負lower_bound浼氱粰鎴戜滑絳旀鐨勶細

Timestamp ageLimit;
...
vt.erase(vt.begin(), lower_bound(vt.begin(),	// 浠巚t涓帓闄ゆ墍鏈?
vt.end(),				// 鎺掑湪ageLimit鐨勫?
ageLimit));			// 鍓嶉潰鐨勫璞?

濡傛灉鎴戜滑鐨勯渶姹傜◢寰敼鍙樹簡涓鐐癸紝鎴戜滑瑕佹帓闄ゆ墍鏈夎嚦灝戝拰ageLimit涓鏍瘋佺殑timestamp錛屼篃灝辨槸鎴戜滑闇瑕佹壘鍒扮涓涓瘮ageLimit騫磋交鐨則imestamp鐨勪綅緗傝繖鏄竴涓負upper_bound鐗瑰埗鐨勪換鍔★細

vt.erase(vt.begin(), upper_bound(vt.begin(),	// 浠巚t涓櫎鍘繪墍鏈?
vt.end(),				// 鎺掑湪ageLimit鐨勫煎墠闈?
ageLimit));			// 鎴栬呯瓑浠風殑瀵硅薄

濡傛灉浣犺鎶婁笢瑗挎彃鍏ヤ竴涓湁搴忓尯闂達紝鑰屼笖瀵硅薄鐨勬彃鍏ヤ綅緗槸鍦ㄦ湁搴忕殑絳変環鍏崇郴涓嬪畠搴旇鍦ㄧ殑鍦版柟鏃訛紝upper_bound涔熷緢鏈夌敤銆傛瘮濡傦紝浣犲彲鑳芥湁涓涓湁搴忕殑Person瀵硅薄鐨刲ist錛屽璞℃寜鐓ame鎺掑簭錛?/p>

class Person {
public:
...
const string& name() const;
...
};
struct PersonNameLess:
public binary_function<Person, Person, bool> {	// 鍙傝鏉℃40
bool operator()(const Person& lhs, const Person& rhs) const
{
return lhs.name() < rhs.name();
}
};
list<Person> lp;
...
lp.sort(PersonNameLess());			// 浣跨敤PersonNameLess鎺掑簭lp

瑕佷繚鎸乴ist浠嶇劧鏄垜浠笇鏈涚殑欏哄簭錛堟寜鐓ame錛屾彃鍏ュ悗絳変環鐨勫悕瀛椾粛鐒舵寜欏哄簭鎺掑垪錛夛紝鎴戜滑鍙互鐢╱pper_bound鏉ユ寚瀹氭彃鍏ヤ綅緗細

Person newPerson;
...
lp.insert(upper_bound(lp.begin(),		// 鍦╨p涓帓鍦╪ewPerson
lp.end(),				// 涔嬪墠鎴栬呯瓑浠?
newPerson,			// 鐨勬渶鍚庝竴涓?
PersonNameLess()),			// 瀵硅薄鍚庨潰
newPerson);			// 鎻掑叆newPerson

榪欏伐浣滅殑寰堝ソ鑰屼笖寰堟柟渚匡紝浣嗗緢閲嶈鐨勬槸涓嶈琚瀵尖斺旈敊璇湴璁や負upper_bound鐨勮繖縐嶇敤娉曡鎴戜滑欖旀湳鑸湴鍦ㄤ竴涓猯ist閲屽湪瀵規暟鏃墮棿鍐呮壘鍒頒簡鎻掑叆浣嶇疆銆傛垜浠茍娌℃湁鈥斺?a >鏉℃34瑙i噴浜嗗洜涓烘垜浠敤浜唋ist錛屾煡鎵捐姳璐圭嚎鎬ф椂闂達紝浣嗘槸瀹冨彧鐢ㄤ簡瀵規暟嬈$殑姣旇緝銆?/p>

涓鐩村埌榪欓噷錛屾垜閮藉彧鑰冭檻鎴戜滑鏈変竴瀵瑰畾涔変簡鎼滅儲鍖洪棿鐨勮凱浠e櫒鐨勬儏鍐點傞氬父鎴戜滑鏈変竴涓鍣紝鑰屼笉鏄竴涓尯闂淬傚湪榪欑鎯呭喌涓嬶紝鎴戜滑蹇呴』鍖哄埆搴忓垪鍜屽叧鑱斿鍣ㄣ傚浜庢爣鍑嗙殑搴忓垪瀹瑰櫒錛坴ector銆乻tring銆乨eque鍜宭ist錛夛紝浣犲簲璇ラ伒寰垜鍦ㄦ湰鏉℃鎻愬嚭鐨勫緩璁紝浣跨敤瀹瑰櫒鐨刡egin鍜宔nd榪唬鍣ㄦ潵鍒掑垎鍑哄尯闂淬?/p>

榪欑鎯呭喌瀵規爣鍑嗗叧鑱斿鍣紙set銆乵ultiset銆乵ap鍜宮ultimap錛夋潵璇存槸涓嶅悓鐨勶紝鍥犱負瀹冧滑鎻愪緵浜嗘悳绱㈢殑鎴愬憳鍑芥暟錛屽畠浠線寰鏄瘮鐢⊿TL綆楁硶鏇村ソ鐨勯夋嫨銆?a >鏉℃44璇︾粏璇存槑浜嗕負浠涔堝畠浠槸鏇村ソ鐨勯夋嫨錛岀畝瑕佸湴璇達紝鏄洜涓哄畠浠洿蹇涓烘洿鑷劧銆傚垢榪愮殑鏄紝鎴愬憳鍑芥暟閫氬父鍜岀浉搴旂殑綆楁硶鏈夊悓鏍風殑鍚嶅瓧錛屾墍浠ュ墠闈㈢殑璁ㄨ鎺ㄨ崘浣犱嬌鐢ㄧ殑綆楁硶count銆乫ind銆乪qual_range銆乴ower_bound鎴杣pper_bound錛屽湪鎼滅儲鍏寵仈瀹瑰櫒鏃朵綘閮藉彲浠ョ畝鍗曠殑鐢ㄥ悓鍚嶇殑鎴愬憳鍑芥暟鏉ヤ唬鏇褲?/p>

璋冪敤binary_search鐨勭瓥鐣ヤ笉鍚岋紝鍥犱負榪欎釜綆楁硶娌℃湁鎻愪緵瀵瑰簲鐨勬垚鍛樺嚱鏁般傝嫻嬭瘯鍦╯et鎴杕ap涓槸鍚﹀瓨鍦ㄦ煇涓鹼紝浣跨敤count鐨勬儻鐢ㄦ柟娉曟潵瀵規垚鍛樿繘琛屾嫻嬶細

set<Widget> s;		// 寤虹珛set錛屾斁鍏ユ暟鎹?
...
Widget w;			// w浠嶇劧鏄繚瀛樿鎼滅儲鐨勫?
...
if (s.count(w)) {
...		// 瀛樺湪鍜寃絳変環鐨勫?
} else {
...		// 涓嶅瓨鍦ㄨ繖鏍風殑鍊?
}

瑕佹祴璇曟煇涓煎湪multiset鎴杕ultimap涓槸鍚﹀瓨鍦紝find寰寰姣攃ount濂斤紝鍥犱負涓鏃︽壘鍒扮瓑浜庢湡鏈涘肩殑鍗曚釜瀵硅薄錛宖ind灝卞彲浠ュ仠涓嬩簡錛岃宑ount錛屽湪鏈閬殑鎯呭喌涓嬶紝蹇呴』媯嫻嬪鍣ㄩ噷鐨勬瘡涓涓璞°傦紙瀵逛簬set鍜宮ap錛岃繖涓嶆槸闂錛屽洜涓簊et涓嶅厑璁擱噸澶嶇殑鍊鹼紝鑰宮ap涓嶅厑璁擱噸澶嶇殑閿傦級

浣嗘槸錛宑ount緇欏叧鑱斿鍣ㄨ鏁版槸鍙潬鐨勩傜壒鍒紝瀹冩瘮璋冪敤equal_range鐒跺悗搴旂敤distance鍒扮粨鏋滆凱浠e櫒鏇村ソ銆傞鍏堬紝瀹冩洿娓呮櫚錛歝ount 鎰忓懗鐫“璁℃暟”銆傜浜岋紝瀹冩洿綆鍗曪紱涓嶇敤寤虹珛涓瀵硅凱浠e櫒鐒跺悗鎶婂畠鐨勭粍鎴?strong>錛堣瘧娉細灝辨槸first鍜宻econd錛?/strong>浼犵粰distance銆傜涓夛紝瀹冨彲鑳芥洿蹇竴鐐廣?/p>

瑕佺粰鍑烘墍鏈夋垜浠湪鏈潯嬈句腑鎵鑰冭檻鍒扮殑錛屾垜浠殑浠庡摢鍎跨潃鎵嬶紵涓嬮潰鐨勮〃鏍奸亾鍑轟簡涓鍒囥?/p>
浣犳兂鐭ラ亾鐨?/th> 浣跨敤鐨勭畻娉?/th> 浣跨敤鐨勬垚鍛樺嚱鏁?/th>
鍦ㄦ棤搴忓尯闂?/td> 鍦ㄦ湁搴忓尯闂?/td> 鍦╯et鎴杕ap涓?/td> 鍦╩ultiset鎴杕ultimap涓?/td>
鏈熸湜鍊兼槸鍚﹀瓨鍦紵 find binary_search count find
鏈熸湜鍊兼槸鍚﹀瓨鍦紵濡傛灉鏈夛紝絎竴涓瓑浜庤繖涓肩殑瀵硅薄鍦ㄥ摢閲岋紵 find equal_range find find鎴杔ower_bound錛堝弬瑙佷笅闈級
絎竴涓笉鍦ㄦ湡鏈涘間箣鍓嶇殑瀵硅薄鍦ㄥ摢閲岋紵 find_if lower_bound lower_bound lower_bound
絎竴涓湪鏈熸湜鍊間箣鍚庣殑瀵硅薄鍦ㄥ摢閲岋紵 find_if upper_bound upper_bound upper_bound
鏈夊灝戝璞$瓑浜庢湡鏈涘鹼紵 count equal_range錛岀劧鍚巇istance count count
絳変簬鏈熸湜鍊肩殑鎵鏈夊璞″湪鍝噷錛?/td> find錛堣凱浠o級 equal_range equal_range equal_range

涓婅〃鎬葷粨浜嗚鎬庝箞鎿嶄綔鏈夊簭鍖洪棿錛宔qual_range鐨勫嚭鐜伴鐜囧彲鑳戒護浜哄悆鎯娿傚綋鎼滅儲鏃訛紝榪欎釜棰戠巼鍥犱負絳変環媯嫻嬬殑閲嶈鎬ц屼笂鍗囦簡銆傚浜巐ower_bound鍜寀pper_bound錛屽畠寰堝鏄撳湪鐩哥瓑媯嫻嬩腑閫鍗達紝浣嗗浜巈qual_range錛屽彧媯嫻嬬瓑浠鋒槸寰堣嚜鐒剁殑銆傚湪絎簩琛屾湁搴忓尯闂達紝equal_range鎵撹觸浜唂ind榪樺洜涓轟竴涓悊鐢憋細equal_range鑺辮垂瀵規暟鏃墮棿錛岃宖ind鑺辮垂綰挎ф椂闂淬?/p>

瀵逛簬multiset鍜宮ultimap錛屽綋浣犲湪鎼滅儲絎竴涓瓑浜庣壒瀹氬肩殑瀵硅薄鐨勯偅涓琛岋紝榪欎釜琛ㄥ垪鍑轟簡find鍜宭ower_bound涓や釜綆楁硶浣滀負鍊欓夈?宸插浜庤繖涓換鍔ind鏄氬父鐨勯夋嫨錛岃屼笖浣犲彲鑳藉凡緇忔敞鎰忓埌鍦╯et鍜宮ap閭d竴鍒楅噷錛岃繖欏瑰彧鏈塮ind銆備絾鏄浜巑ulti瀹瑰櫒錛屽鏋滀笉鍙湁涓涓煎瓨鍦紝find騫朵笉淇濊瘉鑳借瘑鍒嚭瀹瑰櫒閲岀殑絳変簬緇欏畾鍊肩殑絎竴涓厓绱狅紱瀹冨彧璇嗗埆榪欎簺鍏冪礌涓殑涓涓傚鏋滀綘鐪熺殑闇瑕佹壘鍒扮瓑浜庣粰瀹氬肩殑絎竴涓厓绱狅紝浣犲簲璇ヤ嬌鐢╨ower_bound錛岃屼笖浣犲繀欏繪墜鍔ㄧ殑瀵圭浜岄儴鍒嗗仛絳変環媯嫻嬶紝鏉℃19鐨勫唴瀹瑰彲浠ュ府浣犵‘璁や綘宸茬粡鎵懼埌浜嗕綘瑕佹壘鐨勫箋傦紙浣犲彲浠ョ敤equal_range鏉ラ伩鍏嶄綔鎵嬪姩絳変環媯嫻嬶紝浣嗘槸璋冪敤equal_range鐨勮姳璐規瘮璋冪敤lower_bound澶氬緱澶氥傦級

鍦╟ount銆乫ind銆乥inary_search銆乴ower_bound銆乽pper_bound鍜宔qual_range涓仛鍑洪夋嫨寰堢畝鍗曘傚綋浣犺皟鐢ㄦ椂錛岄夋嫨綆楁硶榪樻槸鎴愬憳鍑芥暟鍙互緇欎綘闇瑕佺殑琛屼負鍜屾ц兘錛岃屼笖鏄渶灝戠殑宸ヤ綔銆傛寜鐓ц繖涓緩璁仛錛堟垨鍙傝冮偅涓〃鏍鹼級錛屼綘灝變笉浼氬啀鏈夊洶鎯戙?/p>

true 2007-04-19 15:47 鍙戣〃璇勮
]]> 久久人人爽人人爽人人片AV东京热| 人妻无码精品久久亚瑟影视 | 中文字幕亚洲综合久久2| 国产精品无码久久久久久| 亚洲国产精品久久久久久| 久久99热这里只有精品国产| 亚洲欧洲久久av| 国内精品久久久久影院一蜜桃| 激情五月综合综合久久69| 久久精品人妻中文系列| 国产∨亚洲V天堂无码久久久| 韩国三级中文字幕hd久久精品| 久久精品aⅴ无码中文字字幕不卡 久久精品成人欧美大片 | 精品久久久久久成人AV| 国产精品一区二区久久精品无码 | 亚洲国产精品综合久久网络| 久久婷婷五月综合色高清| 久久午夜无码鲁丝片午夜精品| 久久精品国产亚洲av麻豆小说 | 国产精品久久久99| 亚洲精品美女久久久久99| 国内精品久久久久久久影视麻豆| 色欲久久久天天天综合网| 久久久精品人妻无码专区不卡| 91精品国产色综合久久| 久久精品aⅴ无码中文字字幕不卡| 久久se这里只有精品| 97久久超碰成人精品网站| 亚洲乱码精品久久久久..| 久久婷婷色香五月综合激情| 国产精品内射久久久久欢欢| 男女久久久国产一区二区三区 | 国产精品热久久无码av| 久久综合给合久久国产免费| 国产精品乱码久久久久久软件| 久久久精品国产Sm最大网站| 狠狠色伊人久久精品综合网 | 精品伊人久久大线蕉色首页| 伊人精品久久久久7777| 久久99九九国产免费看小说| 亚洲精品无码久久久久AV麻豆|