锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 1. 瀵逛簬鍏寵仈瀹瑰櫒(濡俶ap, set, multimap,multiset)錛屽垹闄ゅ綋鍓嶇殑iterator錛屼粎浠呬細浣垮綋鍓嶇殑iterator澶辨晥錛屽彧瑕佸湪erase鏃訛紝閫掑褰撳墠iterator鍗沖彲銆?/span>榪欐槸鍥犱負map涔嬬被鐨勫鍣紝浣跨敤浜嗙孩榛戞爲鏉ュ疄鐜幫紝鎻掑叆銆佸垹闄や竴涓粨鐐逛笉浼氬鍏朵粬緇撶偣閫犳垚褰卞搷銆?/span> Set鏄叧鑱斿鍣ㄣ傚叾閿煎氨鏄疄鍊鹼紝瀹炲煎氨鏄敭鍊鹼紝涓嶅彲浠ユ湁閲嶅錛屾墍浠ユ垜浠笉鑳介氳繃set鐨勮凱浠e櫒鏉ユ敼鍙榮et鐨勫厓绱犵殑鍊鹼紝set鎷ユ湁鍜宭ist鐩稿悓鐨勭壒鎬э細褰撳浠栬繘琛屾彃鍏ュ拰鍒犻櫎鎿嶄綔鐨勬椂鍊欙紝鎿嶄綔涔嬪墠鐨勮凱浠e櫒渚濈劧鏈夋晥銆傚綋鐒跺垹闄や簡鐨勯偅涓氨娌℃晥浜嗐係et鐨勫簳灞傜粨鏋勬槸RB-tree錛屾墍浠ユ槸鏈夊簭鐨勩?/p>
stl涓壒鍒彁渚涗簡涓縐嶉拡瀵箂et鐨勬搷浣滅殑綆楁硶錛氫氦闆唖et_intersection錛屽茍闆唖et_union錛屽樊闆唖et_difference銆傚縐板樊闆唖et_symeetric_difference錛岃繖浜涚畻娉曠◢鍚庝細璁插埌銆?/p>
涓錛歴et妯℃澘綾葷殑澹版槑銆?/p>
鍏朵腑涓弬鏁扮殑鎰忎箟濡備笅錛?/strong> key錛?/strong>瑕佹斁鍏et閲岀殑鏁版嵁綾誨瀷錛屽彲浠ユ槸浠諱綍綾誨瀷鐨勬暟鎹?/p>
Traits錛?/strong>榪欐槸涓涓豢鍑芥暟錛堝叧浜庝豢鍑芥暟鏄粈涔堬紝鎴戝悗闈㈢殑鏂囩珷浼氳鍒幫級銆傛彁渚涗簡鍏鋒湁姣旇緝鍔熻兘鐨勪豢鍑芥暟錛屾潵瑙夊緱鍏冪礌鍦╯et閲岀殑鎺掑垪鐨勯『搴忥紝榪欐槸涓涓彲閫夌殑鍙傛暟錛岄粯璁ょ殑鏄痵td::less<key>錛屽鏋滆鑷繁鎻愪緵榪欎釜鍙傛暟錛岄偅涔堝繀欏昏閬靛驚姝よ鍒欙細鍏鋒湁涓や釜鍙傛暟錛岃繑鍥炵被鍨嬩負bool銆?/p>
Allocator:絀洪棿閰嶇疆鍣紝榪欎釜鍙傛暟鏄彲閫夌殑錛岄粯璁ょ殑鏄痵td::allocator<key>. 浜岋細set閲岀殑鍩烘湰鎿嶄綔 鎴戜滑鍙互閫氳繃涓嬮潰鐨勬柟娉曟潵瀹炰緥鍖栦竴涓猻et瀵?/span>璞?/span> std::set<int> s;閭d釜s榪欎釜瀵硅薄閲岄潰瀛樿串鐨勫厓绱犳槸浠庡皬鍒板ぇ鎺掑簭鐨勶紝(鍥犱負鐢╯td::less浣滀負姣旇緝宸ュ叿銆? 濡傛灉瑕佹兂鍦╯閲岄潰鎻掑叆鏁版嵁錛屽彲浠ョ敤inset鍑芥暟錛坰et娌$敤閲嶈澆[]鎿嶄綔錛屽洜涓簊et鏈敓鐨勫煎拰绱㈠紩鏄浉鍚岀殑) s.insert(3);s.insert(5)..... 鍥犱負set鏄泦鍚堬紝閭d箞闆嗗悎鏈韓灝辮姹傛槸鍞竴鎬э紝鎵浠ュ鏋滆鍍弒et閲岄潰鎻掑叆鏁版嵁鍜屼互鍓嶇殑鏁版嵁鏈夐噸鍚堬紝閭d箞鎻掑叆涓嶆垚鍔熴?/font> 鍙互閫氳繃涓嬮潰鐨勬柟娉曟潵閬嶅巻set閲岄潰鐨勫厓绱?/font> 濡傛灉瑕佹煡鎵句竴涓厓绱犵敤find鍑芥暟錛宨t = s.find(3);榪欐牱it鏄寚鍚?鐨勯偅涓厓绱犵殑銆傚彲浠ラ氳繃rbegin錛宺end鏉ラ嗗悜閬嶅巻 榪樻湁鍏朵粬鐨勪竴浜涙搷浣滃湪榪欏氨涓嶄竴涓鍒楀嚭浜嗐?/font> 涓夛細涓巗et鐩稿叧鐨勪竴緇勭畻娉?/font> set_intersection() :榪欎釜鍑芥暟鏄眰涓や釜闆嗗悎鐨勪氦闆?/font>銆備笅闈㈡槸stl閲岀殑婧愪唬鐮?/p>
榪欐槸涓ā鏉垮嚱鏁幫紝浠庝笂闈㈢殑綆楁硶鍙互鐪嬪嚭錛屼紶榪涘幓鐨勪袱涓鍣ㄥ繀欏繪槸鏈夊簭鐨勩俖Dest鎸囧悜杈撳嚭鐨勫鍣紝榪欎釜瀹瑰櫒蹇呴』鏄鍏堝垎閰嶅ソ絀洪棿鐨勶紝鍚﹀垯浼氬嚭閿欑殑,榪斿洖鍊兼寚鍚戜繚瀛樼粨鏋滅殑瀹瑰櫒鐨勫熬绔殑涓嬩竴涓綅緗俥g.
鍦ㄤ嬌鐢╡rase鏂規硶鍒犻櫎鍏冪礌鏃訛紝榪唬鍣ㄦ湁鏃跺欎細澶辨晥銆?/span>鍦‥ffective STL錛屾潯嬈?錛屾壘鍒頒簡erase瀹瑰櫒涓厓绱犵殑鍘熷垯銆?br />
閿欒鐨勪嬌鐢ㄦ柟娉?/strong>錛?br />
std::map<string, string>::iterator iter;
for ( iter = mapTest.begin();iter != mapTest.end(); iter ++ )
{
if ( iter->second == "test" )
{
mapTest.erase( iter );
}
}
姝g‘鐨勪嬌鐢ㄦ柟娉?錛?/strong>
std::map<string, string>::iterator iter;
for ( iter = mapTest.begin();iter != mapTest.end();)
{
if ( iter->second == "test" )
{
mapTest.erase( iter++ );
}
else
{
iter++; // Use Pre Increment for efficiency.
}
}
姝g‘鐨勪嬌鐢ㄦ柟娉?錛?br />
std::map<string, string>::iterator iter;
for ( iter = mapTest.begin();iter != mapTest.end();)
{
if ( iter->second == "test" )
{
iter = mapTest.erase( iter );
}
else
{
++iter; // Use Pre Increment for efficiency.
}
}
2. 瀵逛簬搴忓垪寮忓鍣?濡倂ector,deque)錛屽垹闄ゅ綋鍓嶇殑iterator浼氫嬌鍚庨潰鎵鏈夊厓绱犵殑iterator閮藉け鏁堛傝繖鏄洜涓簐etor,deque浣跨敤浜嗚繛緇垎閰嶇殑鍐呭瓨錛屽垹闄や竴涓厓绱犲鑷村悗闈㈡墍鏈夌殑鍏冪礌浼氬悜鍓嶇Щ鍔ㄤ竴涓綅緗傝繕濂?/span>erase鏂規硶鍙互榪斿洖涓嬩竴涓湁鏁堢殑iterator銆?/span>
3. 瀵逛簬list鏉ヨ錛屽畠浣跨敤浜嗕笉榪炵畫鍒嗛厤鐨勫唴瀛橈紝騫朵笖瀹冪殑erase鏂規硶涔熶細榪斿洖涓嬩竴涓湁鏁堢殑iterator錛屽洜姝や笂闈袱縐嶆紜殑鏂規硶閮藉彲浠ヤ嬌鐢ㄣ?/span>
鍏朵粬閾炬帴錛?a href="http://www.shnenglu.com/Herbert/archive/2009/01/08/70479.html">http://www.shnenglu.com/Herbert/archive/2009/01/08/70479.html
鍏朵粬閾炬帴錛?a >http://blog.csdn.net/kay226/article/details/6126515
鍏朵粬閾炬帴錛?a href="http://www.shnenglu.com/humanchao/archive/2013/04/22/199630.html">http://www.shnenglu.com/humanchao/archive/2013/04/22/199630.html
]]>
榪唬鍣ㄦ槸涓縐嶅璞★紝瀹冭兘澶熺敤鏉ラ亶鍘哠TL瀹瑰櫒涓殑閮ㄥ垎鎴栧叏閮ㄥ厓绱狅紝姣忎釜榪唬鍣ㄥ璞′唬琛ㄥ鍣ㄤ腑鐨勭‘瀹氱殑鍦板潃銆傝凱浠e櫒淇敼浜嗗父瑙勬寚閽堢殑鎺ュ彛錛屾墍璋撹凱浠e櫒鏄竴縐嶆蹇典笂鐨勬娊璞★細閭d簺琛屼負涓婅薄榪唬鍣ㄧ殑涓滆タ閮藉彲浠ュ彨鍋氳凱浠e櫒銆傜劧鑰岃凱浠e櫒鏈夊緢澶氫笉鍚岀殑鑳藉姏錛屽畠鍙互鎶婃娊璞″鍣ㄥ拰閫氱敤綆楁硶鏈夋満鐨勭粺涓璧鋒潵銆?br /> 榪唬鍣ㄦ彁渚涗竴浜涘熀鏈搷浣滅錛?銆?+銆?=銆侊紒=銆?銆傝繖浜涙搷浣滃拰C/C++“鎿嶄綔array鍏冪礌”鏃剁殑鎸囬拡鎺ュ彛涓鑷淬備笉鍚屼箣澶勫湪浜庯紝榪唬鍣ㄦ槸涓墍璋撶殑smart pointers錛屽叿鏈夐亶鍘嗗鏉傛暟鎹粨鏋勭殑鑳藉姏銆傚叾涓嬪眰榪愯鏈哄埗鍙栧喅浜庡叾鎵閬嶅巻鐨勬暟鎹粨鏋勩傚洜姝わ紝姣忎竴縐嶅鍣ㄥ瀷鍒兘蹇呴』鎻愪緵鑷繁鐨勮凱浠e櫒銆備簨瀹炰笂姣忎竴縐嶅鍣ㄩ兘灝嗗叾榪唬鍣ㄤ互宓屽鐨勬柟寮忓畾涔変簬鍐呴儴銆傚洜姝ゅ悇縐嶈凱浠e櫒鐨勬帴鍙g浉鍚岋紝鍨嬪埆鍗翠笉鍚屻傝繖鐩存帴瀵煎嚭浜嗘硾鍨嬬▼搴忚璁$殑姒傚康錛氭墍鏈夋搷浣滆涓洪兘浣跨敤鐩稿悓鎺ュ彛錛岃櫧鐒跺畠浠殑鍨嬪埆涓嶅悓銆?br />
鍔熻兘鐗圭偣
榪唬鍣ㄤ嬌寮鍙戜漢鍛樹笉蹇呮暣涓疄鐜扮被鎺ュ彛銆傚彧闇鎻愪緵涓涓凱浠e櫒錛屽嵆鍙亶鍘嗙被涓殑鏁版嵁緇撴瀯錛屽彲琚敤鏉ヨ闂竴涓鍣ㄧ被鐨勬墍鍖呭嚱鐨勫叏閮ㄥ厓绱狅紝鍏惰涓哄儚涓涓寚閽堬紝浣嗘槸鍙彲琚繘琛屽鍔?++)鎴栧噺灝?--)鎿嶄綔銆備婦涓涓緥瀛愶紝浣犲彲鐢ㄤ竴涓凱浠e櫒鏉ュ疄鐜板vector瀹瑰櫒涓墍鍚厓绱犵殑閬嶅巻銆?br /> 濡備笅浠g爜瀵箆ector瀹瑰櫒瀵硅薄鐢熸垚鍜屼嬌鐢ㄤ簡榪唬鍣細
2 vector<int>::iterator the_iterator;
3 for( int i=0; i < 10; i++ )
4 the_vector.push_back(i);
5 int total = 0;
6 the_iterator = the_vector.begin();
7 while( the_iterator != the_vector.end() )
8 {
9 total += *the_iterator;
10 the_iterator++;
11 }
12 cout << "Total=" << total << endl;
C++鏍囧噯搴撴葷粨
瀹瑰櫒
搴忓垪
vector=========================<vector>
list===========================<list>
deque==========================<deque>
搴忓垪閫傞厤鍣?br /> stack:top,push,pop=============<stack>
queue:front,back,push,pop======<queue>
priority_queue:top,push,pop====<queue>
鍏寵仈瀹瑰櫒
map============================<map>
multimap=======================<map>
set============================<set>
multiset=======================<set>
鎷熷鍣?br /> string=========================<string>
valarray=======================<valarray>
bitset=========================<bitset>
綆楁硶
http://www.cplusplus.com/reference/algorithm/ STL Algorithms 璇︾粏璇存槑銆?br />
闈炰慨鏀規у簭鍒楁搷浣?br /><algorithm>
for_each()=====================瀵瑰簭鍒椾腑姣忎釜鍏冪礌鎵ц鎿嶄綔
find()=========================鍦ㄥ簭鍒椾腑鎵炬煇涓肩殑絎竴涓嚭鐜?br /> find_if()======================鍦ㄥ簭鍒椾腑鎵劇鍚堟煇璋撹瘝鐨勭涓涓厓绱?br /> find_first_of()================鍦ㄥ簭鍒椾腑鎵懼彟涓搴忓垪閲岀殑鍊?br /> adjust_find()==================鎵懼嚭鐩擱偦鐨勪竴瀵瑰?br /> count()========================鍦ㄥ簭鍒椾腑緇熻鏌愪釜鍊煎嚭鐜扮殑嬈℃暟
count_if()=====================鍦ㄥ簭鍒椾腑緇熻涓庢煇璋撹瘝鍖歸厤鐨勬鏁?br /> mismatch()=====================鎵句嬌涓ゅ簭鍒楃浉寮傜殑絎竴涓厓绱?br /> equal()========================濡傛灉涓や釜搴忓垪瀵瑰簲鍏冪礌閮界浉鍚屽垯涓虹湡
search()=======================鎵懼嚭涓搴忓垪浣滀負瀛愬簭鍒楃殑絎竴涓嚭鐜頒綅緗?br /> find_end()=====================鎵懼嚭涓搴忓垪浣滀負瀛愬簭鍒楃殑鏈鍚庝竴涓嚭鐜頒綅緗?br /> search_n()=====================鎵懼嚭涓搴忓垪浣滀負瀛愬簭鍒楃殑絎琻涓嚭鐜頒綅緗?br />淇敼鎬х殑搴忓垪鎿嶄綔
<algorithm>
transform()====================灝嗘搷浣滃簲鐢ㄤ簬搴忓垪涓殑姣忎釜鍏冪礌
copy()=========================浠庡簭鍒楃殑絎竴涓厓绱犺搗榪涜澶嶅埗
copy_backward()================浠庡簭鍒楃殑鏈鍚庡厓绱犺搗榪涜澶嶅埗
swap()=========================浜ゆ崲涓や釜鍏冪礌
iter_swap()====================浜ゆ崲鐢辮凱浠e櫒鎵鎸囩殑涓や釜鍏冪礌
swap_ranges()==================浜ゆ崲涓や釜搴忓垪涓殑鍏冪礌
replace()======================鐢ㄤ竴涓粰瀹氬兼浛鎹竴浜涘厓绱?br /> replace_if()===================鏇挎崲婊¤凍璋撹瘝鐨勪竴浜涘厓绱?br /> replace_copy()=================澶嶅埗搴忓垪鏃剁敤涓涓粰瀹氬兼浛鎹㈠厓绱?br /> replace_copy_if()==============澶嶅埗搴忓垪鏃舵浛鎹㈡弧瓚寵皳璇嶇殑鍏冪礌
fill()=========================鐢ㄤ竴涓粰瀹氬煎彇浠f墍鏈夊厓绱?br /> fill_n()=======================鐢ㄤ竴涓粰瀹氬煎彇浠e墠n涓厓绱?br /> generate()=====================鐢ㄤ竴涓搷浣滅殑緇撴灉鍙栦唬鎵鏈夊厓绱?br /> generate_n()===================鐢ㄤ竴涓搷浣滅殑緇撴灉鍙栦唬鍓峮涓厓绱?br /> remove()=======================鍒犻櫎鍏鋒湁緇欏畾鍊肩殑鍏冪礌
remove_if()====================鍒犻櫎婊¤凍璋撹瘝鐨勫厓绱?br /> remove_copy()==================澶嶅埗搴忓垪鏃跺垹闄ょ粰瀹氬肩殑鍏冪礌
remove_copy_if()===============澶嶅埗搴忓垪鏃跺垹闄ゆ弧瓚寵皳璇嶇殑鍏冪礌
unique()=======================鍒犻櫎鐩擱偦鐨勯噸澶嶅厓绱?br /> unique_copy()==================澶嶅埗搴忓垪鏃跺垹闄ょ浉閭葷殑閲嶅鍏冪礌
reexample()======================鍙嶈漿鍏冪礌鐨勬搴?br /> reexample_copy()=================澶嶅埗搴忓垪鏃跺弽杞厓绱犵殑嬈″簭
rotate()=======================寰幆縐誨姩鍏冪礌
rotate_copy()==================澶嶅埗搴忓垪鏃跺驚鐜Щ鍔ㄥ厓绱?br /> random_shuffle()===============閲囩敤鍧囧寑鍒嗗竷闅忔満縐誨姩鍏冪礌
搴忓垪鎺掑簭
<algorithm>
sort()=========================浠ュ緢濂界殑騫沖潎嬈″簭鎺掑簭
stable_sort()==================鎺掑簭涓旂淮鎸佺浉鍚屽厓绱犲師鏈夌殑欏哄簭
partial_sort()=================灝嗗簭鍒楃殑鍓嶄竴閮ㄥ垎鎺掑ソ搴?br /> partial_sort_copy()============澶嶅埗鐨勫悓鏃跺皢搴忓垪鐨勫墠涓閮ㄥ垎鎺掑ソ搴?br /> nth_element()==================灝嗙n涓厓绱犳斁鍒板畠鐨勬紜綅緗?br /> lower_bound()==================鎵懼埌鏌愪釜鍊肩殑絎竴涓嚭鐜?br /> upper_bound()==================鎵懼埌澶т簬鏌愪釜鍊肩殑絎竴涓嚭鐜?br /> equal_range()==================鎵懼嚭鍏鋒湁緇欏畾鍊肩殑涓涓瓙搴忓垪
binary_search()================鍦ㄦ帓濂藉簭鐨勫簭鍒椾腑紜畾緇欏畾鍏冪礌鏄惁瀛樺湪
merge()========================褰掑茍涓や釜鎺掑ソ搴忕殑搴忓垪
inplace_merge()================褰掑茍涓や釜鎺ョ畫鐨勬帓濂藉簭鐨勫簭鍒?br /> partition()====================灝嗘弧瓚蟲煇璋撹瘝鐨勫厓绱犻兘鏀懼埌鍓嶉潰
stable_partition()=============灝嗘弧瓚蟲煇璋撹瘝鐨勫厓绱犻兘鏀懼埌鍓嶉潰涓旂淮鎸佸師欏哄簭
闆嗗悎綆楁硶
<algorithm>
include()======================濡傛灉涓涓簭鍒楁槸鍙︿竴涓殑瀛愬簭鍒楀垯涓虹湡
set_union()====================鏋勯犱竴涓凡鎺掑簭鐨勫茍闆?br /> set_intersection()=============鏋勯犱竴涓凡鎺掑簭鐨勪氦闆?br /> set_difference()===============鏋勯犱竴涓凡鎺掑簭搴忓垪錛屽寘鍚湪絎竴涓簭鍒椾絾涓嶅湪絎簩涓簭鍒楃殑鍏冪礌
set_symmetric_difference()=====鏋勯犱竴涓凡鎺掑簭搴忓垪錛屽寘鎷墍鏈夊彧鍦ㄤ袱涓簭鍒椾箣涓涓殑鍏冪礌
鍫嗘搷浣?br /><algorithm>
make_heap()====================灝嗗簭鍒楅珮閫熷緱鑳藉浣滀負鍫嗕嬌鐢?br /> push_heap()====================鍚戝爢涓姞鍏ヤ竴涓厓绱?br /> pop_heap()=====================浠庡爢涓幓闄ゅ厓绱?br /> sort_heap()====================瀵瑰爢鎺掑簭
鏈澶у拰鏈灝?br /><algorithm>
min()==========================涓や釜鍊間腑杈冨皬鐨?br /> max()==========================涓や釜鍊間腑杈冨ぇ鐨?br /> min_element()==================搴忓垪涓殑鏈灝忓厓绱?br /> max_element()==================搴忓垪涓殑鏈澶у厓绱?br /> lexicographic_compare()========涓や釜搴忓垪涓寜瀛楀吀搴忕殑絎竴涓湪鍓?br />鎺掑垪
<algorithm>
next_permutation()=============鎸夊瓧鍏稿簭鐨勪笅涓涓帓鍒?br /> prev_permutation()=============鎸夊瓧鍏稿簭鐨勫墠涓涓帓鍒?br />閫氱敤鏁板肩畻娉?br /><numeric>
accumulate()===================縐瘡鍦ㄤ竴涓簭鍒椾腑榪愮畻鐨勭粨鏋?鍚戦噺鐨勫厓绱犳眰鍚勭殑鎺ㄥ箍)
inner_product()================縐瘡鍦ㄤ袱涓簭鍒椾腑榪愮畻鐨勭粨鏋?鍐呯Н)
partial_sum()==================閫氳繃鍦ㄥ簭鍒椾笂鐨勮繍綆椾駭鐢熷簭鍒?澧為噺鍙樺寲)
adjacent_difference()==========閫氳繃鍦ㄥ簭鍒椾笂鐨勮繍綆椾駭鐢熷簭鍒?涓巔artial_sum鐩稿弽)
C椋庢牸綆楁硶
<cstdlib>
qsort()========================蹇熸帓搴忥紝鍏冪礌涓嶈兘鏈夌敤鎴峰畾涔夌殑鏋勯狅紝鎷瘋礉璧嬪煎拰鏋愭瀯鍑芥暟
bsearch()======================浜屽垎娉曟煡鎵撅紝鍏冪礌涓嶈兘鏈夌敤鎴峰畾涔夌殑鏋勯狅紝鎷瘋礉璧嬪煎拰鏋愭瀯鍑芥暟
鍑芥暟瀵硅薄
鍩虹被
template<class Arg, class Res> struct unary_function
template<class Arg, class Arg2, class Res> struct binary_function
璋撹瘝
榪斿洖bool鐨勫嚱鏁板璞°?br /><functional>
equal_to=======================浜屽厓錛宎rg1 == arg2
not_equal_to===================浜屽厓錛宎rg1 != arg2
greater========================浜屽厓錛宎rg1 > arg2
less===========================浜屽厓錛宎rg1 < arg2
greater_equal==================浜屽厓錛宎rg1 >= arg2
less_equal=====================浜屽厓錛宎rg1 <= arg2
logical_and====================浜屽厓錛宎rg1 && arg2
logical_or=====================浜屽厓錛宎rg1 || arg2
logical_not====================涓鍏冿紝!arg
綆楁湳鍑芥暟瀵硅薄
<functional>
plus===========================浜屽厓錛宎rg1 + arg2
minus==========================浜屽厓錛宎rg1 - arg2
multiplies=====================浜屽厓錛宎rg1 * arg2
divides========================浜屽厓錛宎rg1 / arg2
modulus========================浜屽厓錛宎rg1 % arg2
negate=========================涓鍏冿紝-arg
綰︽潫鍣紝閫傞厤鍣ㄥ拰鍚﹀畾鍣?br /><functional>
bind2nd(y)
binder2nd==================浠浣滀負絎簩涓弬鏁拌皟鐢ㄤ簩鍏冨嚱鏁?br /> bind1st(x)
binder1st==================浠浣滀負絎竴涓弬鏁拌皟鐢ㄤ簩鍏冨嚱鏁?br /> mem_fun()
mem_fun_t==================閫氳繃鎸囬拡璋冪敤0鍏冩垚鍛樺嚱鏁?br /> mem_fun1_t=================閫氳繃鎸囬拡璋冪敤涓鍏冩垚鍛樺嚱鏁?br /> const_mem_fun_t============閫氳繃鎸囬拡璋冪敤0鍏僣onst鎴愬憳鍑芥暟
const_mem_fun1_t===========閫氳繃鎸囬拡璋冪敤涓鍏僣onst鎴愬憳鍑芥暟
mem_fun_ref()
mem_fun_ref_t==============閫氳繃寮曠敤璋冪敤0鍏冩垚鍛樺嚱鏁?br /> mem_fun1_ref_t=============閫氳繃寮曠敤璋冪敤涓鍏冩垚鍛樺嚱鏁?br /> const_mem_fun_ref_t========閫氳繃寮曠敤璋冪敤0鍏僣onst鎴愬憳鍑芥暟
const_mem_fun1_ref_t=======閫氳繃寮曠敤璋冪敤涓鍏僣onst鎴愬憳鍑芥暟
ptr_fun()
pointer_to_unary_function==璋冪敤涓鍏冨嚱鏁版寚閽?br /> ptr_fun()
pointer_to_binary_function=璋冪敤浜屽厓鍑芥暟鎸囬拡
not1()
unary_negate===============鍚﹀畾涓鍏冭皳璇?br /> not2()
binary_negate==============鍚﹀畾浜屽厓璋撹瘝
榪唬鍣?br />鍒嗙被
Output: *p= , ++
Input: =*p , -> , ++ , == , !=
Forward: *p= , =*p , -> , ++ , == , !=
Bidirectional: *p= , =*p -> , [] , ++ , -- , == , !=
Random: += , -= , *p= , =*p -> , [] , ++ , -- , + , - , == , != , < , > , <= , >=
鎻掑叆鍣?br /> template<class Cont> back_insert_iterator<Cont> back_inserter(Cont& c);
template<class Cont> front_insert_iterator<Cont> front_inserter(Cont& c);
template<class Cont, class Out> insert_iterator<Cont> back_inserter(Cont& c, Out p);
鍙嶅悜榪唬鍣?br /> reexample_iterator===============rbegin(), rend()
嫻佽凱浠e櫒
ostream_iterator===============鐢ㄤ簬鍚憃stream鍐欏叆
istream_iterator===============鐢ㄤ簬鍚慽stream璇誨嚭
ostreambuf_iterator============鐢ㄤ簬鍚戞祦緙撳啿鍖哄啓鍏?br /> istreambuf_iterator============鐢ㄤ簬鍚戞祦緙撳啿鍖鴻鍑?br />
鍒嗛厤鍣?/strong>
<memory>
template<class T> class std::allocator
鏁板?/strong>
鏁板肩殑闄愬埗
<limits>
numeric_limits<>
<climits>
CHAR_BIT
INT_MAX
...
<cfloat>
DBL_MIN_EXP
FLT_RADIX
LDBL_MAX
...
鏍囧噯鏁板鍑芥暟
<cmath>
double abs(double)=============緇濆鍊?涓嶅湪C涓?錛屽悓fabs()
double fabs(double)============緇濆鍊?br /> double ceil(double d)==========涓嶅皬浜巇鐨勬渶灝忔暣鏁?br /> double floor(double d)=========涓嶅ぇ浜巇鐨勬渶澶ф暣鏁?br /> double sqrt(double d)==========d鍦ㄥ鉤鏂規牴錛宒蹇呴』闈炶礋
double pow(double d, double e)=d鐨別嬈″箓
double pow(double d, int i)====d鐨刬嬈″箓
double cos(double)=============浣欏雞
double sin(double)=============姝e雞
double tan(double)=============姝e垏
double acos(double)============鍙嶄綑寮?br /> double asin(double)============鍙嶆寮?br /> double atan(double)============鍙嶆鍒?br /> double atan2(double x,double y) //atan(x/y)
double sinh(double)============鍙屾洸姝e雞
double cosh(double)============鍙屾洸浣欏雞
double tanh(double)============鍙屾洸姝e垏
double exp(double)=============鎸囨暟錛屼互e涓哄簳
double log(double d)===========鑷姩瀵規暟(浠涓哄簳),d蹇呴』澶т簬0
double log10(double d)=========10搴曞鏁幫紝d蹇呴』澶т簬0
double modf(double d,double*p)=榪斿洖d鐨勫皬鏁伴儴鍒嗭紝鏁存暟閮ㄥ垎瀛樺叆*p
double frexp(double d, int* p)=鎵懼嚭[0.5,1)涓殑x,y,浣縟=x*pow(2,y),榪斿洖x騫跺皢y瀛樺叆*p
double fmod(double d,double m)=嫻偣鏁頒綑鏁幫紝絎﹀彿涓巇鐩稿悓
double ldexp(double d, int i)==d*pow(2,i)
<cstdlib>
int abs(int)===================緇濆鍊?br /> long abs(long)=================緇濆鍊?涓嶅湪C涓?
long labs(long)================緇濆鍊?br /> struct div_t { implementation_defined quot, rem; }
struct ldiv_t { implementation_defined quot, rem; }
div_t div(int n, int d)========鐢╠闄錛岃繑鍥?鍟嗭紝浣欐暟)
ldiv_t div(long n, long d)=====鐢╠闄錛岃繑鍥?鍟嗭紝浣欐暟)(涓嶅湪C涓?
ldiv_t ldiv(long n, long d)====鐢╠闄錛岃繑鍥?鍟嗭紝浣欐暟)
鍚戦噺綆楁湳
<valarray>
valarray
澶嶆暟綆楁湳
<complex>
template<class T> class std::complex;
]]>
C++闃熷垪鏄竴縐嶅鍣ㄩ傞厤鍣紝瀹冪粰浜堢▼搴忓憳涓縐嶅厛榪涘厛鍑?FIFO)鐨勬暟鎹粨鏋勩?br />1.back() 榪斿洖涓涓紩鐢紝鎸囧悜鏈鍚庝竴涓厓绱?br />2.empty() 濡傛灉闃熷垪絀哄垯榪斿洖鐪?br />3.front() 榪斿洖絎竴涓厓绱?br />4.pop() 鍒犻櫎絎竴涓厓绱?br />5.push() 鍦ㄦ湯灝懼姞鍏ヤ竴涓厓绱?br />6.size() 榪斿洖闃熷垪涓厓绱犵殑涓暟
闃熷垪鍙互鐢ㄧ嚎鎬ц〃(list)鎴栧弻鍚戦槦鍒?deque)鏉ュ疄鐜?娉ㄦ剰vector container 涓嶈兘鐢ㄦ潵瀹炵幇queue錛屽洜涓簐ector 娌℃湁鎴愬憳鍑芥暟pop_front!)錛?br />queue<list<int>> q1;
queue<deque<int>> q2;
鍏舵垚鍛樺嚱鏁版湁“鍒ょ┖(empty)” 銆?#8220;灝哄(Size)” 銆?#8220;棣栧厓(front)” 銆?#8220;灝懼厓(backt)” 銆?#8220;鍔犲叆闃熷垪(push)” 銆?#8220;寮瑰嚭闃熷垪(pop)”絳夋搷浣溿?br />
渚嬶細
2 {
3 queue<int> q;
4 q.push(4);
5 q.push(5);
6 printf("%d\n",q.front());
7 q.pop();
8 }
C++ Priority Queues(浼樺厛闃熷垪)
C++浼樺厛闃熷垪綾諱技闃熷垪錛屼絾鏄湪榪欎釜鏁版嵁緇撴瀯涓殑鍏冪礌鎸夌収涓瀹氱殑鏂█鎺掑垪鏈夊簭銆?br />1.empty() 濡傛灉浼樺厛闃熷垪涓虹┖錛屽垯榪斿洖鐪?br />2.pop() 鍒犻櫎絎竴涓厓绱?br />3.push() 鍔犲叆涓涓厓绱?br />4.size() 榪斿洖浼樺厛闃熷垪涓嫢鏈夌殑鍏冪礌鐨勪釜鏁?br />5.top() 榪斿洖浼樺厛闃熷垪涓湁鏈楂樹紭鍏堢駭鐨勫厓绱?br />
浼樺厛綰ч槦鍒楀彲浠ョ敤鍚戦噺(vector)鎴栧弻鍚戦槦鍒?deque)鏉ュ疄鐜?娉ㄦ剰list container 涓嶈兘鐢ㄦ潵瀹炵幇queue錛屽洜涓簂ist 鐨勮凱浠e櫒涓嶆槸浠繪剰瀛樺彇iterator錛岃宲op 涓敤鍒板爢鎺掑簭鏃舵槸瑕佹眰randomaccess iterator 鐨?)錛?br />priority_queue<vector<int>, less<int>> pq1; // 浣跨敤閫掑less<int>鍑芥暟瀵硅薄鎺掑簭
priority_queue<deque<int>, greater<int>> pq2; // 浣跨敤閫掑噺greater<int>鍑芥暟瀵硅薄鎺掑簭
鍏舵垚鍛樺嚱鏁版湁“鍒ょ┖(empty)” 銆?#8220;灝哄(Size)” 銆?#8220;鏍堥《鍏冪礌(top)” 銆?#8220;鍘嬫爤(push)” 銆?#8220;寮規爤(pop)”絳夈?br />
渚嬶細
2 #include <queue>
3 using namespace std;
4
5 class T {
6 public:
7 int x, y, z;
8 T(int a, int b, int c):x(a), y(b), z(c)
9 {
10 }
11 };
12 bool operator < (const T &t1, const T &t2)
13 {
14 return t1.z < t2.z; // 鎸夌収z鐨勯『搴忔潵鍐沖畾t1鍜宼2鐨勯『搴?/span>
15 }
16 main()
17 {
18 priority_queue<T> q;
19 q.push(T(4,4,3));
20 q.push(T(2,2,5));
21 q.push(T(1,5,4));
22 q.push(T(3,3,6));
23 while (!q.empty())
24 {
25 T t = q.top();
26 q.pop();
27 cout << t.x << " " << t.y << " " << t.z << endl;
28 }
29 return 1;
30 }
3 3 6
2 2 5
1 5 4
4 4 3
鍐嶇湅涓涓寜鐓鐨勯『搴忎粠灝忓埌澶у嚭闃熺殑渚嬪瓙錛?
2 #include <queue>
3 using namespace std;
4 class T
5 {
6 public:
7 int x, y, z;
8 T(int a, int b, int c):x(a), y(b), z(c)
9 {
10 }
11 };
12 bool operator > (const T &t1, const T &t2)
13 {
14 return t1.z > t2.z;
15 }
16 main()
17 {
18 priority_queue<T, vector<T>, greater<T> > q;
19 q.push(T(4,4,3));
20 q.push(T(2,2,5));
21 q.push(T(1,5,4));
22 q.push(T(3,3,6));
23 while (!q.empty())
24 {
25 T t = q.top();
26 q.pop();
27 cout << t.x << " " << t.y << " " << t.z << endl;
28 }
29 return 1;
30 }
4 4 3
1 5 4
2 2 5
3 3 6
濡傛灉鎴戜滑鎶婄涓涓緥瀛愪腑鐨勬瘮杈冭繍綆楃閲嶈澆涓猴細 bool operator < (const T &t1, const T &t2) { return t1.z > t2.z; // 鎸夌収z鐨勯『搴忔潵鍐沖畾t1鍜宼2鐨勯『搴弣 鍒欑涓涓緥瀛愮殑紼嬪簭浼氬緱鍒板拰絎簩涓緥瀛愮殑紼嬪簭鐩稿悓鐨勮緭鍑虹粨鏋溿?br />
]]>
2.pop() 縐婚櫎鏍堥《鍏冪礌
3.push() 鍦ㄦ爤欏跺鍔犲厓绱?br />4.size() 榪斿洖鏍堜腑鍏冪礌鏁扮洰
5.top() 榪斿洖鏍堥《鍏冪礌
鏍堝彲浠ョ敤鍚戦噺(vector)銆佺嚎鎬ц〃(list)鎴栧弻鍚戦槦鍒?deque)鏉ュ疄鐜幫細
stack<vector<int>> s1;
stack<list<int> > s2;
stack<deque<int>> s3;
鍏舵垚鍛樺嚱鏁版湁“鍒ょ┖(empty)” 銆?#8220;灝哄(Size)” 銆?#8220;鏍堥《鍏冪礌(top)” 銆?#8220;鍘嬫爤(push)” 銆?#8220;寮規爤(pop)”絳夈?br />
鑼冧緥寮曡嚜錛?a >http://blog.csdn.net/morewindows/article/details/6950881
2 {
3 //鍙互浣跨敤list鎴杤ector浣滀負鏍堢殑瀹瑰櫒錛岄粯璁ゆ槸浣跨敤deque鐨勩?nbsp;
4 stack<int, list<int>> a;
5 stack<int, vector<int>> b;
6 int i;
7
8 //鍘嬪叆鏁版嵁
9 for (i = 0; i < 10; i++)
10 {
11 a.push(i);
12 b.push(i);
13 }
14
15 //鏍堢殑澶у皬
16 printf("%d %d\n", a.size(), b.size());
17
18 //鍙栨爤欏規暟鎹茍灝嗘暟鎹脊鍑烘爤
19 while (!a.empty())
20 {
21 printf("%d ", a.top());
22 a.pop();
23 }
24 putchar('\n');
25
26 while (!b.empty())
27 {
28 printf("%d ", b.top());
29 b.pop();
30 }
31 putchar('\n');
32 return 0;
33 }
34
]]>
闆嗗悎(Set)鏄竴縐嶅寘鍚凡鎺掑簭瀵硅薄鐨勫叧鑱斿鍣ㄣ傚鍏冮泦鍚?MultiSets)鍜岄泦鍚?Sets)鐩稿儚錛屽彧涓嶈繃鏀寔閲嶅瀵硅薄,鍏剁敤娉曚笌set鍩烘湰鐩稿悓銆?br />Set 鍙堢О闆嗗悎錛屽疄闄呬笂灝辨槸涓緇勫厓绱犵殑闆嗗悎錛屼絾鍏朵腑鎵鍖呭惈鐨勫厓绱犵殑鍊兼槸鍞竴鐨勶紝涓旀槸鎸変竴瀹氶『搴忔帓鍒楃殑錛岄泦鍚堜腑鐨勬瘡涓厓绱犺縐頒綔闆嗗悎涓殑瀹炰緥銆傚洜涓哄叾鍐呴儴鏄氳繃閾捐〃鐨勬柟寮忔潵緇勭粐錛屾墍浠ュ湪鎻掑叆鐨勬椂鍊欐瘮vector 蹇紝浣嗗湪鏌ユ壘鍜屾湯灝炬坊鍔犱笂姣攙ector 鎱€?br />multiset 鏄閲嶉泦鍚堬紝鍏跺疄鐜版柟寮忓拰set 鏄浉浼肩殑錛屽彧鏄畠涓嶈姹傞泦鍚堜腑鐨勫厓绱犳槸鍞竴鐨勶紝涔熷氨鏄闆嗗悎涓殑鍚屼竴涓厓绱犲彲浠ュ嚭鐜板嬈°?br />
鏋勯狅細
explicit set(const Compare&=compare());
濡傦細set<int,less<int> > set1;
less<int>鏄竴涓爣鍑嗙被錛岀敤浜庡艦鎴愬崌搴忔帓鍒楀嚱鏁板璞°傞檷搴忔帓鍒楁槸鐢╣reater<int>銆?
Template<class InputIterator> set(InputIterator, InputIterator,\ const Compare&=compare());
濡傦細set<int ,less<int> >set2(vector1.begin(),vector1.end());
閫氳繃鎸囧畾鏌愪竴棰勫厛瀹氫箟鐨勫尯闂存潵鍒濆鍖杝et瀵硅薄鐨勬瀯閫犲嚱鏁般?
set錛坈onst set<Key,Compare&>錛?
濡傦細set<int ,less<int> >set3(set2);
鏂規硶錛?/strong>
1.begin() 榪斿洖鎸囧悜絎竴涓厓绱犵殑榪唬鍣?br />2.clear() 娓呴櫎鎵鏈夊厓绱?br />3.count() 榪斿洖鏌愪釜鍊煎厓绱犵殑涓暟
4.empty() 濡傛灉闆嗗悎涓虹┖錛岃繑鍥瀟rue
5.end() 榪斿洖鎸囧悜鏈鍚庝竴涓厓绱犵殑榪唬鍣?br />6.equal_range() 榪斿洖絎竴涓?gt;=鍏抽敭瀛楃殑榪唬鍣ㄥ拰>鍏抽敭瀛楃殑榪唬鍣?br /> 璇硶錛?br /> pair <iterator,iterator>equal_range( const key_type &key );
//key鏄敤浜庢帓搴忕殑鍏抽敭瀛?br /> Set<int> ctr;
渚嬪錛?br /> Pair<set<int>::iterator,set<int>::iterarot>p;
For(i=0;i<=5;i++) ctr.insert(i);
P=ctr.equal_range(2);
閭d箞*p.first==2;*p.second==3;
7.erase() 鍒犻櫎闆嗗悎涓殑鍏冪礌
璇硶:
iterator erase( iterator i ); //鍒犻櫎i浣嶇疆鍏冪礌
iterator erase( iterator start, iterator end );
//鍒犻櫎浠巗tart寮濮嬪埌end(end涓虹涓涓笉琚垹闄ょ殑鍊?緇撴潫鐨勫厓绱?br /> size_type erase( const key_type &key );
//鍒犻櫎絳変簬key鍊肩殑鎵鏈夊厓绱狅紙榪斿洖琚垹闄ょ殑鍏冪礌鐨勪釜鏁幫級
//鍓嶄袱涓繑鍥炵涓涓笉琚垹闄ょ殑鍙屽悜瀹氫綅鍣?涓嶅瓨鍦ㄨ繑鍥炴湯灝?br /> //絎笁涓繑鍥炲垹闄や釜鏁?br />8.find() 榪斿洖涓涓寚鍚戣鏌ユ壘鍒板厓绱犵殑榪唬鍣?br /> 璇硶:
iterator find( const key_type &key );
//鏌ユ壘絳変簬key鍊肩殑鍏冪礌錛屽茍榪斿洖鎸囧悜璇ュ厓绱犵殑榪唬鍣?
//濡傛灉娌℃湁鎵懼埌,榪斿洖鎸囧悜闆嗗悎鏈鍚庝竴涓厓绱犵殑榪唬鍣?br />9.get_allocator() 榪斿洖闆嗗悎鐨勫垎閰嶅櫒
10.insert() 鍦ㄩ泦鍚堜腑鎻掑叆鍏冪礌
璇硶:
iterator insert( iterator i, const TYPE &val ); //鍦ㄨ凱浠e櫒i鍓嶆彃鍏al
void insert( input_iterator start, input_iterator end );
//灝嗚凱浠e櫒start寮濮嬪埌end錛坋nd涓嶈鎻掑叆錛夌粨鏉熻繑鍥炲唴鐨勫厓绱犳彃鍏ュ埌闆嗗悎涓?br /> pair insert( const TYPE &val );
//鎻掑叆val鍏冪礌錛岃繑鍥炴寚鍚戣鍏冪礌鐨勮凱浠e櫒鍜屼竴涓竷灝斿兼潵璇存槑val鏄惁鎴愬姛琚彃鍏?br /> //搴旇娉ㄦ剰鐨勬槸鍦ㄩ泦鍚?Sets涓笉鑳芥彃鍏ヤ袱涓浉鍚岀殑鍏冪礌)
11.lower_bound() 榪斿洖鎸囧悜澶т簬錛堟垨絳変簬錛夋煇鍊肩殑絎竴涓厓绱犵殑榪唬鍣?br /> 璇硶:
iterator lower_bound( const key_type &key );
//榪斿洖涓涓寚鍚戝ぇ浜庢垨鑰呯瓑浜巏ey鍊肩殑絎竴涓厓绱犵殑榪唬鍣?br />12.key_comp() 榪斿洖涓涓敤浜庡厓绱犻棿鍊兼瘮杈冪殑鍑芥暟
璇硶:
key_compare key_comp();
//榪斿洖涓涓敤浜庡厓绱犻棿鍊兼瘮杈冪殑鍑芥暟瀵硅薄
13.max_size() 榪斿洖闆嗗悎鑳藉綰崇殑鍏冪礌鐨勬渶澶ч檺鍊?br />14.rbegin() 榪斿洖鎸囧悜闆嗗悎涓渶鍚庝竴涓厓绱犵殑鍙嶅悜榪唬鍣?br /> 紺轟緥錛?br /> Set<int> ctr;
Set<int>::reverse_iterator rcp;
For(rcp=ctr.rbegin();rcp!=ctr.rend();rcp++)
Cout<<*rcp<<” ”;
15.rend() 榪斿洖鎸囧悜闆嗗悎涓涓涓厓绱犵殑鍙嶅悜榪唬鍣?br />16.size() 闆嗗悎涓厓绱犵殑鏁扮洰
17.swap() 浜ゆ崲涓や釜闆嗗悎鍙橀噺
璇硶:
void swap( set &object ); //浜ゆ崲褰撳墠闆嗗悎鍜宱bject闆嗗悎涓殑鍏冪礌
18.upper_bound() 榪斿洖澶т簬鏌愪釜鍊煎厓绱犵殑榪唬鍣?br /> 璇硶:
iterator upwer_bound( const key_type &key );
//榪斿洖涓涓寚鍚戝ぇ浜巏ey鍊肩殑絎竴涓厓绱犵殑榪唬鍣?br />19.value_comp() 榪斿洖涓涓敤浜庢瘮杈冨厓绱犻棿鐨勫肩殑鍑芥暟
璇硶:
iterator upper_bound( const key_type &key );//榪斿洖涓涓敤浜庢瘮杈冨厓绱犻棿鐨勫肩殑鍑芥暟瀵硅薄
20.Set闆嗗悎鐨勫茍錛屼氦鍜屽樊
set_union(a.begin(),a.end(),b.begin(),b.end(),insert_iterator<set<int> >(c,c.begin()));
set_intersection(a.begin(),a.end(),b.begin(),b.end(),insert_iterator<set<int> >(c,c.begin()));
set_difference(a.begin(),a.end(),b.begin(),b.end(),insert_iterator<set<int> >(c,c.begin()));
浠ヤ笅杞嚜錛?a >http://blog.csdn.net/wangji163163/article/details/3740948
2 class Key,
3 class Traits=less<Key>,
4 class Allocator=allocator<Key>
5 >
6 class set銆?/span>
2 while(it!=s.end())
3 {
4 cout<<*it++<<endl;//榪唬鍣ㄤ緷嬈″悗縐伙紝鐩村埌鏈熬銆?/span>
5 }
2
3 while(it!=s.rend())
4
5 {cout<<*it++<<endl;}
2 class _InIt2,
3 class _OutIt> inline
4 _OutIt set_intersection(_InIt1 _First1, _InIt1 _Last1,
5 _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
6 { // AND sets [_First1, _Last1) and [_First2, _Last2), using operator<
7 for (; _First1 != _Last1 && _First2 != _Last2; )
8 if (*_First1 < *_First2)
9 ++_First1;
10 else if (*_First2 < *_First1)
11 ++_First2;
12 else
13 *_Dest++ = *_First1++, ++_First2;
14 return (_Dest);
15 }
3 std::set_difference錛堬級錛氬樊闆?br /> 4
5 set_symmetric_difference錛堬級錛氬緱鍒扮殑緇撴灉鏄涓涓凱浠e櫒鐩稿浜庣浜屼釜鐨勫樊闆嗗茍涓婄浜屼釜鐩稿綋浜庣涓涓殑宸泦銆備唬鐮侊細
6
7 struct compare
8 {
9 bool operator ()(string s1,string s2)
10 {
11 return s1>s2;
12 }///鑷畾涔変竴涓豢鍑芥暟
13 };
14 int main()
15 {
16 typedef std::set<string,compare> _SET;
17 _SET s;
18 s.insert(string("sfdsfd"));
19 s.insert(string("apple"));
20 s.insert(string("english"));
21 s.insert(string("dstd"));
22 cout<<"s1:"<<endl;
23 std::set<string,compare>::iterator it = s.begin();
24 while(it!=s.end())
25 cout<<*it++<<" ";
26 cout<<endl<<"s2:"<<endl;
27 _SET s2;
28 s2.insert(string("abc"));
29 s2.insert(string("apple"));
30 s2.insert(string("english"));
31 it = s2.begin();
32 while(it!=s2.end())
33 cout<<*it++<<" ";
34 cout<<endl<<endl;
35
36 string str[10];
37 string *end = set_intersection(s.begin(),s.end(),s2.begin(),s2.end(),str,compare());//姹備氦闆嗭紝榪斿洖鍊兼寚鍚憇tr鏈鍚庝竴涓厓绱犵殑灝劇
38 cout<<"result of set_intersection s1,s2:"<<endl;
39 string *first = str;
40 while(first<end)
41 cout <<*first++<<" ";
42 cout<<endl<<endl<<"result of set_union of s1,s2"<<endl;
43 end = std::set_union(s.begin(),s.end(),s2.begin(),s2.end(),str,compare());//騫墮泦
44 first = str;
45 while(first<end)
46 cout <<*first++<<" ";
47 cout<<endl<<endl<<"result of set_difference of s2 relative to s1"<<endl;
48 first = str;
49 end = std::set_difference(s.begin(),s.end(),s2.begin(),s2.end(),str,compare());//s2鐩稿浜巗1鐨勫樊闆?/span>
50 while(first<end)
51 cout <<*first++<<" ";
52 cout<<endl<<endl<<"result of set_difference of s1 relative to s2"<<endl;
53 first = str;
54 end = std::set_difference(s2.begin(),s2.end(),s.begin(),s.end(),str,compare());//s1鐩稿浜巗2鐨勫樊闆?/span>
55
56 while(first<end)
57 cout <<*first++<<" ";
58 cout<<endl<<endl;
59 first = str;
60 end = std::set_symmetric_difference(s.begin(),s.end(),s2.begin(),s2.end(),str,compare());//涓婇潰涓や釜宸泦鐨勫茍闆?/span>
61 while(first<end)
62 cout <<*first++<<" ";
63 cout<<endl;
64 }
65
66 set<int> s3 ;
67 set<int>::iterator iter = s3.begin() ;
68 set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(),inserter(s3,iter));
69 copy(s3.begin(),s3.end(), ostream_iterator<int>(cout," "));
]]>
]]>
鏄竴縐嶄紭鍖栦簡鐨勩佸搴忓垪涓ょ鍏冪礌榪涜娣誨姞鍜屽垹闄ゆ搷浣滅殑鍩烘湰搴忓垪瀹瑰櫒銆傚畠鍏佽杈冧負蹇熷湴闅忔満璁塊棶錛屼絾瀹冧笉鍍?/span>vector 鎶婃墍鏈夌殑瀵硅薄淇濆瓨鍦ㄤ竴鍧楄繛緇殑鍐呭瓨鍧楋紝鑰屾槸閲囩敤澶氫釜榪炵畫鐨勫瓨鍌ㄥ潡錛屽茍涓斿湪涓涓槧灝勭粨鏋勪腑淇濆瓨瀵硅繖浜涘潡鍙婂叾欏哄簭鐨勮窡韙傚悜deque 涓ょ娣誨姞鎴栧垹闄ゅ厓绱犵殑寮閿寰堝皬銆傚畠涓嶉渶瑕侀噸鏂板垎閰嶇┖闂達紝鎵浠ュ悜鏈澧炲姞鍏冪礌姣?/span>vector 鏇存湁鏁堛?
瀹為檯涓婏紝deque 鏄vector 鍜?/span>list 浼樼己鐐圭殑緇撳悎錛屽畠鏄浜庝袱鑰呬箣闂寸殑涓縐嶅鍣ㄣ?
Deque 鐨勭壒鐐癸細
(1) 闅忔満璁塊棶鏂逛究錛屽嵆鏀寔[ ] 鎿嶄綔絎﹀拰vector.at() 錛屼絾鎬ц兘娌℃湁vector 濂斤紱
(2) 鍙互鍦ㄥ唴閮ㄨ繘琛屾彃鍏ュ拰鍒犻櫎鎿嶄綔錛屼絾鎬ц兘涓嶅強list 錛?
(3) 鍙互鍦ㄤ袱绔繘琛?/span>push 銆?/span>pop 錛?
(4) 鐩稿浜?/span>verctor 鍗犵敤鏇村鐨勫唴瀛樸?
鍙屽悜闃熷垪鍜屽悜閲忓緢鐩鎬技錛屼絾鏄畠鍏佽鍦ㄥ鍣ㄥご閮ㄥ揩閫熸彃鍏ュ拰鍒犻櫎錛堝氨鍍忓湪灝鵑儴涓鏍鳳級銆?/span>
1.Constructors 鍒涘緩涓涓柊鍙屽悜闃熷垪
璇硶:
deque();//鍒涘緩涓涓┖鍙屽悜闃熷垪
deque( size_type size );// 鍒涘緩涓涓ぇ灝忎負size鐨勫弻鍚戦槦鍒?
deque( size_type num, const TYPE &val ); //鏀劇疆num涓?/span>val鐨勬嫹璐濆埌闃熷垪涓?
deque( const deque &from );// 浠?/span>from鍒涘緩涓涓唴瀹逛竴鏍風殑鍙屽悜闃熷垪
deque( input_iterator start, input_iterator end );
// start 鍜?end - 鍒涘緩涓涓槦鍒楋紝淇濆瓨浠?/span>start鍒?/span>end鐨勫厓绱犮?
2.Operators 姣旇緝鍜岃祴鍊煎弻鍚戦槦鍒?
//鍙互浣跨敤[]鎿嶄綔絎﹁闂弻鍚戦槦鍒椾腑鍗曚釜鐨勫厓绱?
3.assign() 璁劇疆鍙屽悜闃熷垪鐨勫?
璇硶:
void assign( input_iterator start, input_iterator end);
//start鍜?/span>end鎸囩ず鐨勮寖鍥翠負鍙屽悜闃熷垪璧嬪?
void assign( Size num, const TYPE &val );//璁劇疆鎴?/span>num涓?/span>val銆?
4.at() 榪斿洖鎸囧畾鐨勫厓绱?nbsp;
璇硶:
reference at( size_type pos ); 榪斿洖涓涓紩鐢紝鎸囧悜鍙屽悜闃熷垪涓綅緗?/span>pos涓婄殑鍏冪礌
5.back() 榪斿洖鏈鍚庝竴涓厓绱?
璇硶:
reference back();//榪斿洖涓涓紩鐢紝鎸囧悜鍙屽悜闃熷垪涓渶鍚庝竴涓厓绱?
6.begin() 榪斿洖鎸囧悜絎竴涓厓绱犵殑榪唬鍣?
璇硶:
iterator begin();//榪斿洖涓涓凱浠e櫒錛屾寚鍚戝弻鍚戦槦鍒楃殑絎竴涓厓绱?
7.clear() 鍒犻櫎鎵鏈夊厓绱?
8.empty() 榪斿洖鐪熷鏋滃弻鍚戦槦鍒椾負絀?
9.end() 榪斿洖鎸囧悜灝鵑儴鐨勮凱浠e櫒
10.erase() 鍒犻櫎涓涓厓绱?
璇硶:
iterator erase( iterator pos ); //鍒犻櫎pos浣嶇疆涓婄殑鍏冪礌
iterator erase( iterator start, iterator end ); //鍒犻櫎start鍜?/span>end涔嬮棿鐨勬墍鏈夊厓绱?
//榪斿洖鎸囧悜琚垹闄ゅ厓绱犵殑鍚庝竴涓厓绱?
11.front() 榪斿洖絎竴涓厓绱犵殑寮曠敤
12.get_allocator() 榪斿洖鍙屽悜闃熷垪鐨勯厤緗櫒
13.insert() 鎻掑叆涓涓厓绱犲埌鍙屽悜闃熷垪涓?
璇硶:
iterator insert( iterator pos, size_type num, const TYPE &val ); //pos鍓嶆彃鍏?/span>num涓?/span>val鍊?
void insert( iterator pos, input_iterator start, input_iterator end );
//鎻掑叆浠?/span>start鍒?/span>end鑼冨洿鍐呯殑鍏冪礌鍒?/span>pos鍓嶉潰
14.max_size() 榪斿洖鍙屽悜闃熷垪鑳藉綰崇殑鏈澶у厓绱犱釜鏁?
15.pop_back() 鍒犻櫎灝鵑儴鐨勫厓绱?
16.pop_front() 鍒犻櫎澶撮儴鐨勫厓绱?
17.push_back() 鍦ㄥ熬閮ㄥ姞鍏ヤ竴涓厓绱?
18.push_front() 鍦ㄥご閮ㄥ姞鍏ヤ竴涓厓绱?
19.rbegin() 榪斿洖鎸囧悜灝鵑儴鐨勯嗗悜榪唬鍣?
20.rend() 榪斿洖鎸囧悜澶撮儴鐨勯嗗悜榪唬鍣?
21.resize() 鏀瑰彉鍙屽悜闃熷垪鐨勫ぇ灝?
22.size() 榪斿洖鍙屽悜闃熷垪涓厓绱犵殑涓暟
23.swap() 鍜屽彟涓涓弻鍚戦槦鍒椾氦鎹㈠厓绱?
璇硶錛?
void swap( deque &target );// 浜ゆ崲target鍜岀幇鍙屽悜闃熷垪涓厓绱?/span>
C++ Vector錛堝悜閲忓鍣級
鏄竴涓嚎鎬ч『搴忕粨鏋勩傜浉褰撲簬鏁扮粍錛屼絾鍏跺ぇ灝忓彲浠ヤ笉棰勫厛鎸囧畾錛屽茍涓旇嚜鍔ㄦ墿灞曘傚畠鍙互鍍忔暟緇勪竴鏍瘋鎿嶄綔錛岀敱浜庡畠鐨勭壒鎬ф垜浠畬鍏ㄥ彲浠ュ皢vector 鐪嬩綔鍔ㄦ佹暟緇勩?
鍦ㄥ垱寤轟竴涓?/span>vector 鍚庯紝瀹冧細鑷姩鍦ㄥ唴瀛樹腑鍒嗛厤涓鍧楄繛緇殑鍐呭瓨絀洪棿榪涜鏁版嵁瀛樺偍錛屽垵濮嬬殑絀洪棿澶у皬鍙互棰勫厛鎸囧畾涔熷彲浠ョ敱vector 榛樿鎸囧畾錛岃繖涓ぇ灝忓嵆capacity 錛堬級鍑芥暟鐨勮繑鍥炲箋傚綋瀛樺偍鐨勬暟鎹秴榪囧垎閰嶇殑絀洪棿鏃秜ector 浼氶噸鏂板垎閰嶄竴鍧楀唴瀛樺潡錛屼絾榪欐牱鐨勫垎閰嶆槸寰堣楁椂鐨勶紝鍦ㄩ噸鏂板垎閰嶇┖闂存椂瀹冧細鍋氳繖鏍風殑鍔ㄤ綔錛?
棣栧厛錛寁ector 浼氱敵璇蜂竴鍧楁洿澶х殑鍐呭瓨鍧楋紱
鐒跺悗錛屽皢鍘熸潵鐨勬暟鎹嫹璐濆埌鏂扮殑鍐呭瓨鍧椾腑錛?
鍏舵錛岄攢姣佹帀鍘熷唴瀛樺潡涓殑瀵硅薄錛堣皟鐢ㄥ璞$殑鏋愭瀯鍑芥暟錛夛紱
鏈鍚庯紝灝嗗師鏉ョ殑鍐呭瓨絀洪棿閲婃斁鎺夈?
濡傛灉vector 淇濆瓨鐨勬暟鎹噺寰堝ぇ鏃訛紝榪欐牱鐨勬搷浣滀竴瀹氫細瀵艱嚧緋熺硶鐨勬ц兘錛堣繖涔熸槸vector 琚璁℃垚姣旇緝瀹規槗鎷瘋礉鐨勫肩被鍨嬬殑鍘熷洜錛夈傛墍浠ヨvector 涓嶆槸鍦ㄤ粈涔堟儏鍐典笅鎬ц兘閮藉ソ錛屽彧鏈夊湪棰勫厛鐭ラ亾瀹冨ぇ灝忕殑鎯呭喌涓媣ector 鐨勬ц兘鎵嶆槸鏈浼樼殑銆?/span>
vector 鐨勭壒鐐癸細
(1) 鎸囧畾涓鍧楀鍚屾暟緇勪竴鏍風殑榪炵畫瀛樺偍錛屼絾絀洪棿鍙互鍔ㄦ佹墿灞曘傚嵆瀹冨彲浠ュ儚鏁扮粍涓鏍鋒搷浣滐紝騫朵笖鍙互榪涜鍔ㄦ佹搷浣溿傞氬父浣撶幇鍦?/span>push_back() pop_back() 銆?
(2) 闅忔満璁塊棶鏂逛究錛屽畠鍍忔暟緇勪竴鏍瘋璁塊棶錛屽嵆鏀寔[ ] 鎿嶄綔絎﹀拰vector.at()
(3) 鑺傜渷絀洪棿錛屽洜涓哄畠鏄繛緇瓨鍌紝鍦ㄥ瓨鍌ㄦ暟鎹殑鍖哄煙閮芥槸娌℃湁琚氮璐圭殑錛屼絾鏄鏄庣‘涓鐐?/span>vector 澶у鎯呭喌涓嬪茍涓嶆槸婊″瓨鐨勶紝鍦ㄦ湭瀛樺偍鐨勫尯鍩熷疄闄呮槸嫻垂鐨勩?
(4) 鍦ㄥ唴閮ㄨ繘琛屾彃鍏ャ佸垹闄ゆ搷浣滄晥鐜囬潪甯鎬綆錛岃繖鏍風殑鎿嶄綔鍩烘湰涓婃槸琚姝㈢殑銆?/span>Vector 琚璁℃垚鍙兘鍦ㄥ悗绔繘琛岃拷鍔犲拰鍒犻櫎鎿嶄綔錛屽叾鍘熷洜鏄?/span>vector 鍐呴儴鐨勫疄鐜版槸鎸夌収欏哄簭琛ㄧ殑鍘熺悊銆?
(5) 鍙兘鍦?/span>vector 鐨勬渶鍚庤繘琛?/span>push 鍜?/span>pop 錛屼笉鑳藉湪vector 鐨勫ご榪涜push 鍜?/span>pop 銆?
(6) 褰撳姩鎬佹坊鍔犵殑鏁版嵁瓚呰繃vector 榛樿鍒嗛厤鐨勫ぇ灝忔椂瑕佽繘琛屽唴瀛樼殑閲嶆柊鍒嗛厤銆佹嫹璐濅笌閲婃斁錛岃繖涓搷浣滈潪甯告秷鑰楁ц兘銆?鎵浠ヨvector 杈懼埌鏈浼樼殑鎬ц兘錛屾渶濂藉湪鍒涘緩vector 鏃跺氨鎸囧畾鍏剁┖闂村ぇ灝忋?
Vectors 鍖呭惈鐫涓緋誨垪榪炵畫瀛樺偍鐨勫厓绱?/span>,鍏惰涓哄拰鏁扮粍綾諱技銆傝闂?/span>Vector涓殑浠繪剰鍏冪礌鎴栦粠鏈熬娣誨姞鍏冪礌閮藉彲浠ュ湪甯擱噺綰ф椂闂村鏉傚害鍐呭畬鎴愶紝鑰屾煡鎵劇壒瀹氬肩殑鍏冪礌鎵澶勭殑浣嶇疆鎴栨槸鍦?/span>Vector涓彃鍏ュ厓绱犲垯鏄嚎鎬ф椂闂村鏉傚害銆?/span>
1.Constructors 鏋勯犲嚱鏁?
vector<int> v1; //鏋勯犱竴涓┖鐨剉ector
vector<int> v1( 5, 42 ); //鏋勯犱簡涓涓寘鍚?涓間負42鐨勫厓绱犵殑Vector
2.Operators 瀵箆ector榪涜璧嬪兼垨姣旇緝
C++ Vectors鑳藉浣跨敤鏍囧噯榪愮畻絎? ==, !=, <=, >=, <, 鍜?>.
瑕佽闂畍ector涓殑鏌愮壒瀹氫綅緗殑鍏冪礌鍙互浣跨敤 [] 鎿嶄綔絎?
涓や釜vectors琚涓烘槸鐩哥瓑鐨?濡傛灉:
1.瀹冧滑鍏鋒湁鐩稿悓鐨勫閲?
2.鎵鏈夌浉鍚屼綅緗殑鍏冪礌鐩哥瓑.
vectors涔嬮棿澶у皬鐨勬瘮杈冩槸鎸夌収璇嶅吀瑙勫垯.
3.assign() 瀵筕ector涓殑鍏冪礌璧嬪?
璇硶錛?
void assign( input_iterator start, input_iterator end );
// 灝嗗尯闂碵start, end)鐨勫厓绱犺祴鍒板綋鍓峷ector
void assign( size_type num, const TYPE &val );
// 璧媙um涓間負val鐨勫厓绱犲埌vector涓?榪欎釜鍑芥暟灝嗕細娓呴櫎鎺変負vector璧嬪間互鍓嶇殑鍐呭銆?/span>
4.at() 榪斿洖鎸囧畾浣嶇疆鐨勫厓绱?
璇硶錛?
TYPE at( size_type loc );//宸笉澶氱瓑鍚寁[i];浣嗘瘮v[i]瀹夊叏;
5.back() 榪斿洖鏈鏈竴涓厓绱?
6.begin() 榪斿洖絎竴涓厓绱犵殑榪唬鍣?
7.capacity() 榪斿洖vector鎵鑳藉綰崇殑鍏冪礌鏁伴噺(鍦ㄤ笉閲嶆柊鍒嗛厤鍐呭瓨鐨勬儏鍐典笅錛?
8.clear() 娓呯┖鎵鏈夊厓绱?
9.empty() 鍒ゆ柇Vector鏄惁涓虹┖錛堣繑鍥瀟rue鏃朵負絀猴級
10.end() 榪斿洖鏈鏈厓绱犵殑榪唬鍣?璇戞敞:瀹炴寚鍚戞渶鏈厓绱犵殑涓嬩竴涓綅緗?
11.erase() 鍒犻櫎鎸囧畾鍏冪礌
璇硶錛?
iterator erase( iterator loc );//鍒犻櫎loc澶勭殑鍏冪礌
iterator erase( iterator start, iterator end );//鍒犻櫎start鍜宔nd涔嬮棿鐨勫厓绱?/span>
12.front() 榪斿洖絎竴涓厓绱犵殑寮曠敤
13.get_allocator() 榪斿洖vector鐨勫唴瀛樺垎閰嶅櫒
14.insert() 鎻掑叆鍏冪礌鍒癡ector涓?
璇硶錛?
iterator insert( iterator loc, const TYPE &val );
//鍦ㄦ寚瀹氫綅緗甽oc鍓嶆彃鍏ュ間負val鐨勫厓绱?榪斿洖鎸囧悜榪欎釜鍏冪礌鐨勮凱浠e櫒,
void insert( iterator loc, size_type num, const TYPE &val );
//鍦ㄦ寚瀹氫綅緗甽oc鍓嶆彃鍏um涓間負val鐨勫厓绱?
void insert( iterator loc, input_iterator start, input_iterator end );
//鍦ㄦ寚瀹氫綅緗甽oc鍓嶆彃鍏ュ尯闂碵start, end)鐨勬墍鏈夊厓绱?
15.max_size() 榪斿洖Vector鎵鑳藉綰沖厓绱犵殑鏈澶ф暟閲忥紙涓婇檺錛?
16.pop_back() 縐婚櫎鏈鍚庝竴涓厓绱?
17.push_back() 鍦╒ector鏈鍚庢坊鍔犱竴涓厓绱?
18.rbegin() 榪斿洖Vector灝鵑儴鐨勯嗚凱浠e櫒
19.rend() 榪斿洖Vector璧峰鐨勯嗚凱浠e櫒
20.reserve() 璁劇疆Vector鏈灝忕殑鍏冪礌瀹圭撼鏁伴噺
//涓哄綋鍓峷ector棰勭暀鑷沖皯鍏卞綰硈ize涓厓绱犵殑絀洪棿
21.resize() 鏀瑰彉Vector鍏冪礌鏁伴噺鐨勫ぇ灝?
璇硶:
void resize( size_type size, TYPE val );
//鏀瑰彉褰撳墠vector鐨勫ぇ灝忎負size,涓斿鏂板垱寤虹殑鍏冪礌璧嬪紇al
22.size() 榪斿洖Vector鍏冪礌鏁伴噺鐨勫ぇ灝?
23.swap() 浜ゆ崲涓や釜Vector
璇硶錛?
void swap( vector &from );
Vector鐢ㄦ硶 錛?/span>
1.澹版槑錛?
涓涓獀ector綾諱技浜庝竴涓姩鎬佺殑涓緇存暟緇勩?/span>
vector<int> a; //澹版槑涓涓厓绱犱負int綾誨瀷鐨剉ector a
vectot<MyType> a; //澹版槑涓涓厓绱犱負MyType綾誨瀷鐨剉ector a
榪欓噷鐨勫0鏄庣殑a鍖呭惈0涓厓绱狅紝鏃.size()鐨勫間負0錛屼絾瀹冩槸鍔ㄦ佺殑錛屽叾澶у皬浼氶殢鐫鏁版嵁鐨勬彃鍏ュ拰鍒犻櫎鏀瑰彉鑰屾敼鍙樸?/span>
vector<int> a(100, 0); //榪欓噷澹版槑鐨勬槸涓涓凡緇忓瓨鏀句簡100涓?鐨勬暣鏁皏ector
浣犲彲浠ョ敤浠ヤ笅鐨勫嚑縐嶆柟娉曞0鏄庝竴涓?vector 瀵硅薄錛?/span>
vector<float> v(5, 3.25); //鍒濆鍖栨湁5 涓厓绱狅紝鍏跺奸兘鏄?.25
vector<float> v_new1(v);
vector<float> v_new2 = v;
vector<float> v_new3(v.begin(), v.end());
榪欏洓涓獀ector 瀵硅薄鏄浉絳夌殑錛屽彲浠ョ敤operator==鏉ュ垽鏂?/span>
2.鍚戦噺鎿嶄綔
甯哥敤鍑芥暟錛?
size_t size(); // 榪斿洖vector鐨勫ぇ灝忥紝鍗沖寘鍚殑鍏冪礌涓暟
void pop_back(); // 鍒犻櫎vector鏈熬鐨勫厓绱狅紝vector澶у皬鐩稿簲鍑忎竴
void push_back(); //鐢ㄤ簬鍦╲ector鐨勬湯灝炬坊鍔犲厓绱?
T back(); // 榪斿洖vector鏈熬鐨勫厓绱?
void clear(); // 灝唙ector娓呯┖錛寁ector澶у皬鍙樹負0
鍏朵粬璁塊棶鏂瑰紡錛?
cout<<a[5]<<endl;
cout<<a.at(5)<<endl;
浠ヤ笂鍖哄埆鍦ㄤ簬鍚庤呭湪璁塊棶瓚婄晫鏃朵細鎶涘嚭寮傚父錛岃屽墠鑰呬笉浼氥?/span>
3.閬嶅巻
(1). for(vector<datatype>::iterator it=a.begin(); it!=a.end();it++)
cout<<*it<<endl;
(2). for(int i=0;i<a.size;i++)
cout<<a[i]<<endl;
鐜板湪鎯沖緱鍒板鍣ㄤ腑鑳戒繚瀛樼殑鏈澶у厓绱犳暟閲忓氨鍙互鐢?vector 綾葷殑鎴愬憳鍑芥暟max_size()錛?/span>
vector<shape>::size_type max_size = my_shapes.max_size();
褰撳墠瀹瑰櫒鐨勫疄闄呭昂瀵?--- 宸叉湁鐨勫厓绱犱釜鏁扮敤size()錛?/span>
vector<shape>::size_type size = my_shapes.size();
灝卞儚size_type 鎻忚堪浜唙ector 灝哄鐨勭被鍨嬶紝value_type 璇存槑浜嗗叾涓繚瀛樼殑瀵硅薄鐨勭被鍨嬶細
cout << “value type: “ << typeid(vector<float>::value_type).name();
杈撳嚭錛?/span>
value type: float
鍙互鐢╟apacity()鏉ュ彇寰梫ector 涓凡鍒嗛厤鍐呭瓨鐨勫厓绱犱釜鏁幫細
vector<int> v;
vector<int>::size_type capacity = v.capacity();
vector 綾諱技浜庢暟緇勶紝鍙互浣跨敤涓嬫爣[]璁塊棶錛?/span>
vector<int> v(10);
v[0] = 101;
娉ㄦ剰鍒拌繖閲岄鍏堢粰10 涓厓绱犲垎閰嶄簡絀洪棿銆備綘涔熷彲浠ヤ嬌鐢╲ector 鎻愪緵鐨勬彃鍏ュ嚱鏁版潵鍔ㄦ佺殑鎵?/span>
灞曞鍣ㄣ傛垚鍛樺嚱鏁皃ush_back()灝卞湪vector 鐨勫熬閮ㄦ坊鍔犱簡涓涓厓绱狅細
v.push_back(3);
涔熷彲浠ョ敤insert()鍑芥暟瀹屾垚鍚屾牱鐨勫伐浣滐細
v.insert(v.end(), 3);
榪欓噷insert()鎴愬憳鍑芥暟闇瑕佷袱涓弬鏁幫細涓涓寚鍚戝鍣ㄤ腑鎸囧畾浣嶇疆鐨勮凱浠e櫒(iterator)錛屼竴涓緟鎻?/span>
鍏ョ殑鍏冪礌銆俰nsert()灝嗗厓绱犳彃鍏ュ埌榪唬鍣ㄦ寚瀹氬厓绱犱箣鍓嶃?/span>
鐜板湪瀵硅凱浠e櫒(Iterator)鍋氱偣瑙i噴銆侷terator 鏄寚閽?pointer)鐨勬硾鍖栵紝iterator 瑕佹眰瀹氫箟
operator*錛屽畠榪斿洖鎸囧畾綾誨瀷鐨勫箋侷terator 甯稿父鍜屽鍣ㄨ仈緋誨湪涓璧楓備緥瀛愶細
vector<int> v(3);
v[0] = 5;
v[1] = 2;
v[2] = 7;
vector<int>::iterator first = v.begin();
vector<int>::iterator last = v.end();
while (first != last)
cout << *first++ << “ “;
涓婇潰浠g爜鐨勮緭鍑烘槸錛?/span>
5 2 7
begin()榪斿洖鐨勬槸vector 涓涓涓厓绱犵殑iterator錛岃宔nd()榪斿洖鐨勫茍涓嶆槸鏈鍚庝竴涓厓绱犵殑
iterator錛岃屾槸past the last element銆傚湪STL 涓彨past-the-end iterator銆?br />
緇勫悎鏌ユ壘
vector<int>::iterator result = find( v.begin( ), v.end( ), 2 ); //鏌ユ壘2
if ( result == v.end( ) ) //娌℃壘鍒?/span>
cout << "No" << endl;
else //鎵懼埌
cout << "Yes" << endl;