锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产欧美一区二区三区另类精品,国产一区白浆,国产精品美女主播在线观看纯欲http://www.shnenglu.com/wanghaiguang/category/19428.html閫嗘按琛岃垷錛屼笉榪涘垯閫zh-cnFri, 29 May 2015 02:03:00 GMTFri, 29 May 2015 02:03:00 GMT60STL涓敤erase()鏂規硶閬嶅巻鍒犻櫎鍏冪礌澶辨晥鐨勯棶棰?/title><link>http://www.shnenglu.com/wanghaiguang/archive/2013/10/14/203714.html</link><dc:creator>鐜嬫搗鍏?/dc:creator><author>鐜嬫搗鍏?/author><pubDate>Mon, 14 Oct 2013 10:22:00 GMT</pubDate><guid>http://www.shnenglu.com/wanghaiguang/archive/2013/10/14/203714.html</guid><wfw:comment>http://www.shnenglu.com/wanghaiguang/comments/203714.html</wfw:comment><comments>http://www.shnenglu.com/wanghaiguang/archive/2013/10/14/203714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/wanghaiguang/comments/commentRss/203714.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/wanghaiguang/services/trackbacks/203714.html</trackback:ping><description><![CDATA[   <span style="font-size: 12pt;">   STL涓殑瀹瑰櫒鎸夊瓨鍌ㄦ柟寮忓垎涓轟袱綾伙細涓綾繪槸鎸変互鏁扮粍褰㈠紡瀛樺偍鐨勫鍣紙濡傦細vector錛宒eque錛夛紱鍙︿竴綾繪槸浠ヤ笉榪炵畫鐨勮妭鐐瑰艦寮忓瓨鍌ㄧ殑瀹瑰櫒錛堝錛歭ist錛宮ap錛宻et錛夈?/span><br /><span style="font-size: 12pt;">      鍦ㄤ嬌鐢╡rase鏂規硶鍒犻櫎鍏冪礌鏃訛紝</span><span style="color: #333333; font-family: Arial; font-size: 12pt; line-height: 26px; background-color: #ffffff;">榪唬鍣ㄦ湁鏃跺欎細澶辨晥銆?/span><span style="background-color: #ffffff; color: #333333; font-family: Arial; font-size: 16px; line-height: 26px;">鍦‥ffective STL錛屾潯嬈?錛屾壘鍒頒簡erase瀹瑰櫒涓厓绱犵殑鍘熷垯銆?br /></span><p style="color: #333333; font-family: Arial; font-size: 16px; line-height: 26px; background-color: #ffffff;">         <span style="font-size: 12pt;">1. 瀵逛簬鍏寵仈瀹瑰櫒(濡俶ap, set, multimap,multiset)錛屽垹闄ゅ綋鍓嶇殑iterator錛屼粎浠呬細浣垮綋鍓嶇殑iterator澶辨晥錛屽彧瑕佸湪erase鏃訛紝閫掑褰撳墠iterator鍗沖彲銆?/span><span style="color: #ff6600; font-size: 12pt;">榪欐槸鍥犱負map涔嬬被鐨勫鍣紝浣跨敤浜嗙孩榛戞爲鏉ュ疄鐜幫紝鎻掑叆銆佸垹闄や竴涓粨鐐逛笉浼氬鍏朵粬緇撶偣閫犳垚褰卞搷銆?/span><span style="color: #ff6600;"><br /></span><strong>閿欒鐨勪嬌鐢ㄦ柟娉?/strong>錛?br /></p><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; font-family: Verdana; font-size: 12pt;">    std::map</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"><</span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">string</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">, </span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">string</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> mapTest;<br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">    std::map</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"><</span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">string</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">, </span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">string</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">::iterator iter; <br />    </span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">for</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> ( iter </span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">=</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> mapTest.begin();iter </span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">!=</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> mapTest.end(); iter </span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">++</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> ) <br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">    { <br />        </span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">if</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> ( iter</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">-></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">second </span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">==</span><span style="color: #000000; "> </span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">"</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">test</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">"</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> ) <br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">        { <br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">            mapTest.erase( iter ); <br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">        } <br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">    } </span></div><br /><strong style="font-size: 12pt;">姝g‘鐨勪嬌鐢ㄦ柟娉?錛?/strong><strong><br /></strong><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="font-size: 12pt; font-family: Verdana;">    </span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">std::map</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"><</span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">string</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">, </span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">string</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> mapTest;<br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">    std::map</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"><</span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">string</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">, </span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">string</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">::iterator iter; <br />    </span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">for</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> ( iter </span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">=</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> mapTest.begin();iter </span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">!=</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> mapTest.end();) <br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">    { <br />        </span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">if</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> ( iter</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">-></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">second </span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">==</span><span style="color: #000000; "> </span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">"</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">test</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">"</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> ) <br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">        { <br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">            mapTest.erase( iter</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">++</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;"> ); <br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">        } <br />        </span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">else</span><span style="color: #000000; "><br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">        {<br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">            iter</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">++</span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">; </span><span style="color: #008000; font-family: Verdana; font-size: 12pt;">//</span><span style="color: #008000; font-family: Verdana; font-size: 12pt;"> Use Pre Increment for efficiency. </span><span style="color: #008000; "><br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">        }<br /></span><span style="color: #000000; font-family: Verdana; font-size: 12pt;">    } </span></div>     <span style="font-size: 12pt;"> 鍥犱負iter浼犵粰erase鏂規硶鐨勬槸涓涓壇鏈紝iter++浼氭寚鍚戜笅涓涓厓绱犮?/span><br /> <br /><strong style="font-size: 12pt;">姝g‘鐨勪嬌鐢ㄦ柟娉?錛?br /></strong><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><span style="font-family: Verdana; font-size: 12pt;">    std::map<</span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">string</span><span style="font-family: Verdana; font-size: 12pt;">, </span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">string</span><span style="font-family: Verdana; font-size: 12pt;">></span><span style="font-family: Verdana; font-size: 12pt;"> mapTest;</span><br /><span style="font-family: Verdana; font-size: 12pt;">    std::map</span><span style="font-family: Verdana; font-size: 12pt;"><</span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">string</span><span style="font-family: Verdana; font-size: 12pt;">, </span><span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">string</span><span style="font-family: Verdana; font-size: 12pt;">></span><span style="font-family: Verdana; font-size: 12pt;">::iterator iter; </span><br />     <span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">for</span><span style="font-family: Verdana; font-size: 12pt;"> ( iter </span><span style="font-family: Verdana; font-size: 12pt;">=</span><span style="font-family: Verdana; font-size: 12pt;"> mapTest.begin();iter </span><span style="font-family: Verdana; font-size: 12pt;">!=</span><span style="font-family: Verdana; font-size: 12pt;"> mapTest.end();) </span><br /><span style="font-family: Verdana; font-size: 12pt;">    { </span><br />        <span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">if</span><span style="font-family: Verdana; font-size: 12pt;"> ( iter</span><span style="font-family: Verdana; font-size: 12pt;">-></span><span style="font-family: Verdana; font-size: 12pt;">second </span><span style="font-family: Verdana; font-size: 12pt;">==</span> <span style="font-family: Verdana; font-size: 12pt;">"</span><span style="font-family: Verdana; font-size: 12pt;">test</span><span style="font-family: Verdana; font-size: 12pt;">"</span><span style="font-family: Verdana; font-size: 12pt;"> ) </span><br /><span style="font-family: Verdana; font-size: 12pt;">        { </span><br /><span style="font-family: Verdana; font-size: 12pt;">            iter </span><span style="font-family: Verdana; font-size: 12pt;">=</span><span style="font-family: Verdana; font-size: 12pt;"> mapTest.erase( iter ); </span><br /><span style="font-family: Verdana; font-size: 12pt;">        } </span><br />        <span style="color: #0000ff; font-family: Verdana; font-size: 12pt;">else</span><br /><span style="font-family: Verdana; font-size: 12pt;">        {</span><br />               <span style="font-family: Verdana; font-size: 12pt;">++</span><span style="font-family: Verdana; font-size: 12pt;">iter; </span><span style="color: #008000; font-family: Verdana; font-size: 12pt;">//</span><span style="color: #008000; font-family: Verdana; font-size: 12pt;"> Use Pre Increment for efficiency. </span><span style="color: #008000; "><br /></span><span style="font-family: Verdana; font-size: 12pt;">        }</span><br /><span style="font-family: Verdana; font-size: 12pt;">    } </span></div><br />        <span style="font-size: 12pt;"> 2. 瀵逛簬搴忓垪寮忓鍣?濡倂ector,deque)錛屽垹闄ゅ綋鍓嶇殑iterator浼氫嬌鍚庨潰鎵鏈夊厓绱犵殑iterator閮藉け鏁堛傝繖鏄洜涓簐etor,deque浣跨敤浜嗚繛緇垎閰嶇殑鍐呭瓨錛屽垹闄や竴涓厓绱犲鑷村悗闈㈡墍鏈夌殑鍏冪礌浼氬悜鍓嶇Щ鍔ㄤ竴涓綅緗傝繕濂?/span><span style="color: #ff6600; font-size: 12pt;">erase鏂規硶鍙互榪斿洖涓嬩竴涓湁鏁堢殑iterator</span><span style="font-size: 12pt;">銆?/span><br /><span style="font-size: 12pt;">       3. 瀵逛簬list鏉ヨ錛屽畠浣跨敤浜嗕笉榪炵畫鍒嗛厤鐨勫唴瀛橈紝騫朵笖瀹冪殑erase鏂規硶涔熶細榪斿洖涓嬩竴涓湁鏁堢殑iterator錛屽洜姝や笂闈袱縐嶆紜殑鏂規硶閮藉彲浠ヤ嬌鐢ㄣ?/span><br />      <br />鍏朵粬閾炬帴錛?a href="http://www.shnenglu.com/Herbert/archive/2009/01/08/70479.html">http://www.shnenglu.com/Herbert/archive/2009/01/08/70479.html<br />鍏朵粬</a>閾炬帴錛?a >http://blog.csdn.net/kay226/article/details/6126515<br />鍏朵粬閾炬帴</a>錛?a href="http://www.shnenglu.com/humanchao/archive/2013/04/22/199630.html">http://www.shnenglu.com/humanchao/archive/2013/04/22/199630.html</a><img src ="http://www.shnenglu.com/wanghaiguang/aggbug/203714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/wanghaiguang/" target="_blank">鐜嬫搗鍏?/a> 2013-10-14 18:22 <a href="http://www.shnenglu.com/wanghaiguang/archive/2013/10/14/203714.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>STL榪唬鍣ㄥ強鎬葷粨http://www.shnenglu.com/wanghaiguang/archive/2012/06/05/177647.html鐜嬫搗鍏?/dc:creator>鐜嬫搗鍏?/author>Tue, 05 Jun 2012 05:59:00 GMThttp://www.shnenglu.com/wanghaiguang/archive/2012/06/05/177647.htmlhttp://www.shnenglu.com/wanghaiguang/comments/177647.htmlhttp://www.shnenglu.com/wanghaiguang/archive/2012/06/05/177647.html#Feedback0http://www.shnenglu.com/wanghaiguang/comments/commentRss/177647.htmlhttp://www.shnenglu.com/wanghaiguang/services/trackbacks/177647.html瑙i噴
      榪唬鍣ㄦ槸涓縐嶅璞★紝瀹冭兘澶熺敤鏉ラ亶鍘哠TL瀹瑰櫒涓殑閮ㄥ垎鎴栧叏閮ㄥ厓绱狅紝姣忎釜榪唬鍣ㄥ璞′唬琛ㄥ鍣ㄤ腑鐨勭‘瀹氱殑鍦板潃銆傝凱浠e櫒淇敼浜嗗父瑙勬寚閽堢殑鎺ュ彛錛屾墍璋撹凱浠e櫒鏄竴縐嶆蹇典笂鐨勬娊璞★細閭d簺琛屼負涓婅薄榪唬鍣ㄧ殑涓滆タ閮藉彲浠ュ彨鍋氳凱浠e櫒銆傜劧鑰岃凱浠e櫒鏈夊緢澶氫笉鍚岀殑鑳藉姏錛屽畠鍙互鎶婃娊璞″鍣ㄥ拰閫氱敤綆楁硶鏈夋満鐨勭粺涓璧鋒潵銆?br />      榪唬鍣ㄦ彁渚涗竴浜涘熀鏈搷浣滅錛?銆?+銆?=銆侊紒=銆?銆傝繖浜涙搷浣滃拰C/C++“鎿嶄綔array鍏冪礌”鏃剁殑鎸囬拡鎺ュ彛涓鑷淬備笉鍚屼箣澶勫湪浜庯紝榪唬鍣ㄦ槸涓墍璋撶殑smart pointers錛屽叿鏈夐亶鍘嗗鏉傛暟鎹粨鏋勭殑鑳藉姏銆傚叾涓嬪眰榪愯鏈哄埗鍙栧喅浜庡叾鎵閬嶅巻鐨勬暟鎹粨鏋勩傚洜姝わ紝姣忎竴縐嶅鍣ㄥ瀷鍒兘蹇呴』鎻愪緵鑷繁鐨勮凱浠e櫒銆備簨瀹炰笂姣忎竴縐嶅鍣ㄩ兘灝嗗叾榪唬鍣ㄤ互宓屽鐨勬柟寮忓畾涔変簬鍐呴儴銆傚洜姝ゅ悇縐嶈凱浠e櫒鐨勬帴鍙g浉鍚岋紝鍨嬪埆鍗翠笉鍚屻傝繖鐩存帴瀵煎嚭浜嗘硾鍨嬬▼搴忚璁$殑姒傚康錛氭墍鏈夋搷浣滆涓洪兘浣跨敤鐩稿悓鎺ュ彛錛岃櫧鐒跺畠浠殑鍨嬪埆涓嶅悓銆?br />
鍔熻兘鐗圭偣
      榪唬鍣ㄤ嬌寮鍙戜漢鍛樹笉蹇呮暣涓疄鐜扮被鎺ュ彛銆傚彧闇鎻愪緵涓涓凱浠e櫒錛屽嵆鍙亶鍘嗙被涓殑鏁版嵁緇撴瀯錛屽彲琚敤鏉ヨ闂竴涓鍣ㄧ被鐨勬墍鍖呭嚱鐨勫叏閮ㄥ厓绱狅紝鍏惰涓哄儚涓涓寚閽堬紝浣嗘槸鍙彲琚繘琛屽鍔?++)鎴栧噺灝?--)鎿嶄綔銆備婦涓涓緥瀛愶紝浣犲彲鐢ㄤ竴涓凱浠e櫒鏉ュ疄鐜板vector瀹瑰櫒涓墍鍚厓绱犵殑閬嶅巻銆?br />      濡備笅浠g爜瀵箆ector瀹瑰櫒瀵硅薄鐢熸垚鍜屼嬌鐢ㄤ簡榪唬鍣細
 1 vector<int> the_vector;
 2 vector<int>::iterator the_iterator;
 3     forint 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;
鎻愮ず錛氶氳繃瀵逛竴涓凱浠e櫒鐨勮В寮曠敤鎿嶄綔錛?錛夛紝鍙互璁塊棶鍒板鍣ㄦ墍鍖呭惈鐨勫厓绱犮?br />
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++ Queues(闃熷垪)銆丳riority Queues(浼樺厛闃熷垪)http://www.shnenglu.com/wanghaiguang/archive/2012/06/05/177644.html鐜嬫搗鍏?/dc:creator>鐜嬫搗鍏?/author>Tue, 05 Jun 2012 05:21:00 GMThttp://www.shnenglu.com/wanghaiguang/archive/2012/06/05/177644.htmlhttp://www.shnenglu.com/wanghaiguang/comments/177644.htmlhttp://www.shnenglu.com/wanghaiguang/archive/2012/06/05/177644.html#Feedback0http://www.shnenglu.com/wanghaiguang/comments/commentRss/177644.htmlhttp://www.shnenglu.com/wanghaiguang/services/trackbacks/177644.htmlC++ Queues(闃熷垪)

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 />
渚嬶細
1 int main()
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 />
渚嬶細
 1 #include <iostream>
 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

      鍐嶇湅涓涓寜鐓鐨勯『搴忎粠灝忓埌澶у嚭闃熺殑渚嬪瓙錛?
 1 #include <iostream> 
 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 />


]]>
C++ Stacks錛堝爢鏍堬級http://www.shnenglu.com/wanghaiguang/archive/2012/06/05/177643.html鐜嬫搗鍏?/dc:creator>鐜嬫搗鍏?/author>Tue, 05 Jun 2012 05:16:00 GMThttp://www.shnenglu.com/wanghaiguang/archive/2012/06/05/177643.htmlhttp://www.shnenglu.com/wanghaiguang/comments/177643.htmlhttp://www.shnenglu.com/wanghaiguang/archive/2012/06/05/177643.html#Feedback0http://www.shnenglu.com/wanghaiguang/comments/commentRss/177643.htmlhttp://www.shnenglu.com/wanghaiguang/services/trackbacks/177643.html1.empty() 鍫嗘爤涓虹┖鍒欒繑鍥炵湡
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

 1 int main()  
 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 



]]>
C++ Sets & MultiSetshttp://www.shnenglu.com/wanghaiguang/archive/2012/06/05/177627.html鐜嬫搗鍏?/dc:creator>鐜嬫搗鍏?/author>Tue, 05 Jun 2012 02:51:00 GMThttp://www.shnenglu.com/wanghaiguang/archive/2012/06/05/177627.htmlhttp://www.shnenglu.com/wanghaiguang/comments/177627.htmlhttp://www.shnenglu.com/wanghaiguang/archive/2012/06/05/177627.html#Feedback0http://www.shnenglu.com/wanghaiguang/comments/commentRss/177627.htmlhttp://www.shnenglu.com/wanghaiguang/services/trackbacks/177627.htmlSTL Set浠嬬粛

闆嗗悎(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

STL Set 浜ら泦 鍚堥泦 宸泦

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>

1 template <
2    class Key, 
3    class Traits=less<Key>
4    class Allocator=allocator<Key> 
5 >
6 class set銆?/span>

鍏朵腑涓弬鏁扮殑鎰忎箟濡備笅錛?/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>

1 std::set<int>::iterator it = s.begin();
2 while(it!=s.end())
3 {
4    cout<<*it++<<endl;//榪唬鍣ㄤ緷嬈″悗縐伙紝鐩村埌鏈熬銆?/span>
5 }

濡傛灉瑕佹煡鎵句竴涓厓绱犵敤find鍑芥暟錛宨t = s.find(3);榪欐牱it鏄寚鍚?鐨勯偅涓厓绱犵殑銆傚彲浠ラ氳繃rbegin錛宺end鏉ラ嗗悜閬嶅巻

1 std::set<int>::reverse_iterator it = s.rbegin();
2 
3 while(it!=s.rend())
4 
5 {cout<<*it++<<endl;}

榪樻湁鍏朵粬鐨勪竴浜涙搷浣滃湪榪欏氨涓嶄竴涓鍒楀嚭浜嗐?/font>

涓夛細涓巗et鐩稿叧鐨勪竴緇勭畻娉?/font>

set_intersection() :榪欎釜鍑芥暟鏄眰涓や釜闆嗗悎鐨勪氦闆?/font>銆備笅闈㈡槸stl閲岀殑婧愪唬鐮?/p>

 1 template<class _InIt1,
 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 }

      榪欐槸涓ā鏉垮嚱鏁幫紝浠庝笂闈㈢殑綆楁硶鍙互鐪嬪嚭錛屼紶榪涘幓鐨勪袱涓鍣ㄥ繀欏繪槸鏈夊簭鐨勩俖Dest鎸囧悜杈撳嚭鐨勫鍣紝榪欎釜瀹瑰櫒蹇呴』鏄鍏堝垎閰嶅ソ絀洪棿鐨勶紝鍚﹀垯浼氬嚭閿欑殑,榪斿洖鍊兼寚鍚戜繚瀛樼粨鏋滅殑瀹瑰櫒鐨勫熬绔殑涓嬩竴涓綅緗俥g.

 1 set_union() :姹備袱涓泦鍚堢殑騫墮泦錛屽弬鏁拌姹傚悓涓娿?br /> 2 
 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,"   "));


 



]]>C++ Maps & MultiMapshttp://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177493.html鐜嬫搗鍏?/dc:creator>鐜嬫搗鍏?/author>Mon, 04 Jun 2012 08:57:00 GMThttp://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177493.htmlhttp://www.shnenglu.com/wanghaiguang/comments/177493.htmlhttp://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177493.html#Feedback0http://www.shnenglu.com/wanghaiguang/comments/commentRss/177493.htmlhttp://www.shnenglu.com/wanghaiguang/services/trackbacks/177493.html闃呰鍏ㄦ枃

]]>
C++ Deque(鍙屽悜闃熷垪) http://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177477.html鐜嬫搗鍏?/dc:creator>鐜嬫搗鍏?/author>Mon, 04 Jun 2012 07:57:00 GMThttp://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177477.htmlhttp://www.shnenglu.com/wanghaiguang/comments/177477.htmlhttp://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177477.html#Feedback0http://www.shnenglu.com/wanghaiguang/comments/commentRss/177477.htmlhttp://www.shnenglu.com/wanghaiguang/services/trackbacks/177477.htmlC++ Deque(鍙屽悜闃熷垪)

    鏄竴縐嶄紭鍖栦簡鐨勩佸搴忓垪涓ょ鍏冪礌榪涜娣誨姞鍜屽垹闄ゆ搷浣滅殑鍩烘湰搴忓垪瀹瑰櫒銆傚畠鍏佽杈冧負蹇熷湴闅忔満璁塊棶錛屼絾瀹冧笉鍍?/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++ List(鍙屽悜閾捐〃)http://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177475.html鐜嬫搗鍏?/dc:creator>鐜嬫搗鍏?/author>Mon, 04 Jun 2012 07:50:00 GMThttp://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177475.htmlhttp://www.shnenglu.com/wanghaiguang/comments/177475.htmlhttp://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177475.html#Feedback0http://www.shnenglu.com/wanghaiguang/comments/commentRss/177475.htmlhttp://www.shnenglu.com/wanghaiguang/services/trackbacks/177475.html闃呰鍏ㄦ枃

]]>
Vector浠嬬粛http://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177416.html鐜嬫搗鍏?/dc:creator>鐜嬫搗鍏?/author>Mon, 04 Jun 2012 01:18:00 GMThttp://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177416.htmlhttp://www.shnenglu.com/wanghaiguang/comments/177416.htmlhttp://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177416.html#Feedback0http://www.shnenglu.com/wanghaiguang/comments/commentRss/177416.htmlhttp://www.shnenglu.com/wanghaiguang/services/trackbacks/177416.html

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;


 



]]>
STL浠嬬粛http://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177412.html鐜嬫搗鍏?/dc:creator>鐜嬫搗鍏?/author>Mon, 04 Jun 2012 00:52:00 GMThttp://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177412.htmlhttp://www.shnenglu.com/wanghaiguang/comments/177412.htmlhttp://www.shnenglu.com/wanghaiguang/archive/2012/06/04/177412.html#Feedback0http://www.shnenglu.com/wanghaiguang/comments/commentRss/177412.htmlhttp://www.shnenglu.com/wanghaiguang/services/trackbacks/177412.html
STL浠嬬粛
    C++ STL (Standard Template Library
鏍囧噯妯℃澘搴?/span>) 鏄氱敤綾繪ā鏉垮拰綆楁硶鐨勯泦鍚堬紝瀹冩彁渚涚粰紼嬪簭鍛樹竴浜涙爣鍑嗙殑鏁版嵁緇撴瀯鐨勫疄鐜板 queues(闃熷垪), lists(閾捐〃), 鍜?stacks(鏍?/span>)絳?/span>. 璇ュ簱鍖呭惈浜嗚澶氬湪璁$畻鏈?a >縐戝棰嗗煙閲屾墍甯哥敤鐨勫熀鏈暟鎹粨鏋勫拰鍩烘湰綆楁硶銆傛彁渚涗簡涓涓彲鎵╁睍鐨勫簲鐢ㄦ鏋訛紝楂樺害浣撶幇浜嗚蔣浠剁殑鍙鐢ㄦс?/span>
浠庨昏緫灞傛鏉ョ湅錛屽湪STL涓綋鐜頒簡娉涘瀷鍖栫▼搴忚璁$殑鎬濇兂錛坓eneric programming錛夛紝寮曞叆浜嗚澶氭柊鐨勫悕璇嶏紝姣斿鍍忛渶姹傦紙requirements錛夛紝姒傚康錛坈oncept錛夛紝妯″瀷錛坢odel錛夛紝瀹瑰櫒錛坈ontainer錛夛紝綆楁硶錛坅lgorithmn錛夛紝榪唬瀛愶紙iterator錛夌瓑銆備笌OOP錛坥bject-oriented programming錛変腑鐨勫鎬侊紙polymorphism錛変竴鏍鳳紝娉涘瀷涔熸槸涓縐嶈蔣浠剁殑澶嶇敤鎶鏈?/span>
浠庡疄鐜板眰嬈$湅錛屾暣涓猄TL鏄互涓縐嶇被鍨嬪弬鏁板寲錛坱ype parameterized錛夌殑鏂瑰紡瀹炵幇鐨勶紝榪欑鏂瑰紡鍩轟簬涓涓湪鏃╁厛C++鏍囧噯涓病鏈夊嚭鐜扮殑璇█鐗規?-妯℃澘錛坱emplate錛夈?br />
C++ STL 鎻愪緵緇欑▼搴忓憳浠ヤ笅涓夌被鏁版嵁緇撴瀯鐨勫疄鐜?/strong>錛?
鏍囧噯瀹瑰櫒綾?br /> 
欏哄簭鎬у鍣?/strong>
   vector 浠庡悗闈㈠揩閫熺殑鎻掑叆涓庡垹闄わ紝鐩存帴璁塊棶浠諱綍鍏冪礌
   deque 浠庡墠闈㈡垨鍚庨潰蹇熺殑鎻掑叆涓庡垹闄わ紝鐩存帴璁塊棶浠諱綍鍏冪礌
   list 鍙岄摼琛紝浠庝換浣曞湴鏂瑰揩閫熸彃鍏ヤ笌鍒犻櫎
 
涓夎呮瘮杈冿細
   vector 鏄竴孌佃繛緇殑鍐呭瓨鍧楋紝鑰宒eque 鏄涓繛緇殑鍐呭瓨鍧楋紝 list 鏄墍鏈夋暟鎹厓绱犲垎寮淇濆瓨錛屽彲浠ユ槸浠諱綍涓や釜鍏冪礌娌℃湁榪炵畫銆倂ector 鐨勬煡璇㈡ц兘鏈濂斤紝騫朵笖鍦ㄦ湯绔鍔犳暟鎹篃寰堝ソ錛岄櫎闈炲畠閲嶆柊鐢寵鍐呭瓨孌碉紱閫傚悎楂樻晥鍦伴殢鏈哄瓨鍌ㄣ俵ist 鏄竴涓摼琛紝浠諱綍涓涓厓绱犻兘鍙互鏄笉榪炵畫鐨勶紝浣嗗畠閮芥湁涓や釜鎸囧悜涓婁竴鍏冪礌鍜屼笅涓鍏冪礌鐨勬寚閽堛傛墍浠ュ畠瀵規彃鍏ャ佸垹闄ゅ厓绱犳ц兘鏄渶濂界殑錛岃屾煡璇㈡ц兘闈炲父宸紱閫傚悎澶ч噺鍦版彃鍏ュ拰鍒犻櫎鎿嶄綔鑰屼笉鍏沖績闅忔満瀛樺彇鐨勯渶姹傘俤eque 鏄粙浜庝袱鑰呬箣闂達紝瀹冨吋欏句簡鏁扮粍鍜岄摼琛ㄧ殑浼樼偣錛屽畠鏄垎鍧楃殑閾捐〃鍜屽涓暟緇勭殑鑱斿悎銆傛墍浠ュ畠鏈夎list濂界殑鏌ヨ鎬ц兘錛屾湁琚玽ector濂界殑鎻掑叆銆佸垹闄ゆц兘銆?濡傛灉浣犻渶瑕侀殢鍗沖瓨鍙栧張鍏沖績涓ょ鏁版嵁鐨勬彃鍏ュ拰鍒犻櫎錛岄偅涔坉eque鏄渶浣充箣閫夈?br />

鍏寵仈瀹瑰櫒
   set 蹇熸煡鎵撅紝涓嶅厑璁擱噸澶嶅?
   multiset 蹇熸煡鎵撅紝鍏佽閲嶅鍊?
   map 涓瀵瑰鏄犲皠錛屽熀浜庡叧閿瓧蹇熸煡鎵撅紝涓嶅厑璁擱噸澶嶅?
   multimap 涓瀵瑰鏄犲皠錛屽熀浜庡叧閿瓧蹇熸煡鎵撅紝鍏佽閲嶅鍊?br />
   鍏寵仈瀹瑰櫒(Associative Container)鎻愪緵浜嗗揩閫熸绱㈠熀浜庡叧閿瘝(Key)鐨勬暟鎹殑鑳藉姏銆傚拰搴忓垪瀹瑰櫒(vector銆乴ist銆乨eque)涓鏍鳳紝鍏寵仈瀹瑰櫒鐢ㄦ潵瀛樺偍鏁版嵁錛岃屼笖璁捐鍏寵仈瀹瑰櫒鏃惰冭檻鍒頒簡浼樺寲鏁版嵁媯绱㈢殑鎰忓浘 --- 閫氳繃鍏抽敭璇?Key)浣滀負鏍囪瘑鎶婂崟涓鐨勬暟鎹褰曠粍緇囧埌鐗瑰畾鐨勭粨鏋勪腑(濡倀ree)銆係TL 鎻愪緵浜嗕笉鍚岀殑鍏寵仈瀹瑰櫒錛氶泦鍚?set)銆佸鍏冮泦鍚?multiset)銆佹槧灝?map)銆佸鍏冩槧灝?multimap)銆俿et 鍜宮ap 鏀寔鍞竴鍏抽敭璇?unique key)錛屽氨鏄姣忎釜KEY錛屾渶澶氬彧淇濆瓨涓涓厓绱?鏁版嵁
璁板綍)銆俶ultiset 鍜宮ultimap 鍒欐敮鎸佺浉鍚屽叧閿瘝(equal key)錛岃繖鏍峰彲鏈夊緢澶氫釜鍏冪礌鍙互鐢ㄥ悓涓涓狵EY 榪涜瀛樺偍銆俿et(multiset)鍜宮ap(multimap)涔嬮棿鐨勫尯鍒湪浜巗et(multiset)涓殑瀛樺偍鏁版嵁鍐呭惈浜咾EY 琛ㄨ揪寮忥紱鑰宮ap(multimap)鍒欏皢Key 琛ㄨ揪寮忓拰瀵瑰簲鐨勬暟鎹垎寮瀛樻斁銆?/span>

瀹瑰櫒閫傞厤鍣?/strong>
   stack 鍚庤繘鍏堝嚭
   queue 鍏堣繘鍏堝嚭
   priority_queue 鏈楂樹紭鍏堢駭鍏冪礌鎬繪槸絎竴涓嚭鍒?br />
   STL 涓寘鍚笁縐嶉傞厤鍣細鏍坰tack 銆侀槦鍒梣ueue 鍜屼紭鍏堢駭priority_queue 銆傞傞厤鍣ㄦ槸瀹瑰櫒鐨勬帴鍙o紝瀹冩湰韜笉鑳界洿鎺ヤ繚瀛樺厓绱狅紝瀹冧繚瀛樺厓绱犵殑鏈哄埗鏄皟鐢ㄥ彟涓縐嶉『搴忓鍣ㄥ幓瀹炵幇錛屽嵆鍙互鎶婇傞厤鍣ㄧ湅浣?#8220;瀹冧繚瀛樹竴涓鍣紝榪欎釜瀹瑰櫒鍐嶄繚瀛樻墍鏈夊厓绱?#8221;銆?br />   STL 涓彁渚涚殑涓夌閫傞厤鍣ㄥ彲浠ョ敱鏌愪竴縐嶉『搴忓鍣ㄥ幓瀹炵幇銆傞粯璁や笅stack 鍜宷ueue 鍩轟簬deque 瀹瑰櫒瀹炵幇錛宲riority_queue 鍒欏熀浜巚ector 瀹瑰櫒瀹炵幇銆傚綋鐒跺湪鍒涘緩涓涓傞厤鍣ㄦ椂涔熷彲浠ユ寚瀹氬叿浣撶殑瀹炵幇瀹瑰櫒錛屽垱寤洪傞厤鍣ㄦ椂鍦ㄧ浜屼釜鍙傛暟涓婃寚瀹氬叿浣撶殑欏哄簭瀹瑰櫒鍙互瑕嗙洊閫傞厤鍣ㄧ殑榛樿瀹炵幇銆傜敱浜庨傞厤鍣ㄧ殑鐗圭偣錛屼竴涓傞厤鍣ㄤ笉鏄彲浠ョ敱浠諱竴涓『搴忓鍣ㄩ兘鍙互瀹炵幇鐨勩?br />   鏍坰tack 鐨勭壒鐐規槸鍚庤繘鍏堝嚭錛屾墍浠ュ畠鍏寵仈鐨勫熀鏈鍣ㄥ彲浠ユ槸浠繪剰涓縐嶉『搴忓鍣紝鍥犱負榪欎簺瀹瑰櫒綾誨瀷緇撴瀯閮藉彲浠ユ彁渚涙爤鐨勬搷浣滄湁姹傦紝瀹冧滑閮芥彁渚涗簡push_back 銆乸op_back 鍜宐ack 鎿嶄綔銆?br />   闃熷垪queue 鐨勭壒鐐規槸鍏堣繘鍏堝嚭錛岄傞厤鍣ㄨ姹傚叾鍏寵仈鐨勫熀紜瀹瑰櫒蹇呴』鎻愪緵pop_front 鎿嶄綔錛屽洜姝ゅ叾涓嶈兘寤虹珛鍦╲ector 瀹瑰櫒涓娿?/span>


]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲永久精品大片| 久久久久久久999| 亚洲一级一区| 欧美激情一区二区三区在线视频| 亚洲欧美综合国产精品一区| 国产精品高潮呻吟久久| 亚洲精品日韩激情在线电影| 狂野欧美一区| 欧美在线一级va免费观看| 国产精品美腿一区在线看| 一本一本久久a久久精品牛牛影视| 亚洲福利视频免费观看| 久久激情网站| 国产综合网站| 欧美成年人视频网站欧美| 久久aⅴ乱码一区二区三区| 黄色一区二区三区四区| 毛片一区二区| 欧美国产亚洲另类动漫| 夜夜嗨av一区二区三区四区| 一片黄亚洲嫩模| 国产欧美欧美| 欧美二区在线观看| 欧美精品久久99| 亚洲免费在线精品一区| 欧美一区二区三区四区夜夜大片| 激情文学一区| 欧美成人免费网| 欧美国产综合一区二区| 亚洲欧美激情四射在线日 | 亚洲高清在线| 欧美精品日本| 欧美一区二区三区四区夜夜大片 | 欧美日韩一二三区| 欧美呦呦网站| 久久久亚洲国产天美传媒修理工 | 国产亚洲精品福利| 玖玖综合伊人| 欧美日本一区| 久久久不卡网国产精品一区| 久久精品夜夜夜夜久久| 亚洲一区二区视频在线观看| 欧美一级久久| av不卡在线看| 欧美在线不卡视频| 亚洲伦伦在线| 欧美一激情一区二区三区| 亚洲国产精品传媒在线观看 | 亚洲第一在线综合在线| 国产精品v亚洲精品v日韩精品 | 亚洲免费在线看| 亚洲国产天堂久久综合网| 亚洲一区观看| 日韩午夜一区| 久久久777| 香蕉成人啪国产精品视频综合网| 免费看的黄色欧美网站| 久久国产乱子精品免费女| 欧美欧美在线| 欧美成人激情在线| 国产视频在线观看一区| 99精品久久免费看蜜臀剧情介绍| 亚洲高清资源| 久久成人羞羞网站| 欧美亚洲午夜视频在线观看| 欧美日韩精品免费看| 欧美激情bt| 亚洲第一中文字幕| 久久精品国产99| 久久精品女人的天堂av| 国产精品区免费视频| 一二美女精品欧洲| 一区二区三区日韩在线观看 | 一区二区三区精密机械公司| 麻豆freexxxx性91精品| 久久视频在线免费观看| 国产精品一区二区在线观看网站| 亚洲人久久久| 亚洲精品视频免费| 欧美成人免费全部| 亚洲电影在线免费观看| 老司机免费视频一区二区三区| 欧美一区二区在线观看| 国产精品狠色婷| 在线一区二区三区四区| 99亚洲视频| 欧美日韩成人在线观看| 亚洲精品乱码久久久久久按摩观| 亚洲国产美国国产综合一区二区| 久久综合色一综合色88| 欧美成人精品不卡视频在线观看| 影音先锋成人资源站| 另类激情亚洲| 亚洲黑丝在线| 亚洲亚洲精品在线观看| 国产精品jizz在线观看美国| 亚洲一区二区三区免费在线观看| 亚洲欧美中文日韩在线| 国产精品日韩欧美大师| 午夜精品久久久久久久久| 久久久久久久综合色一本| 亚洲第一偷拍| 欧美日韩免费观看一区三区 | 欧美日韩国产精品一卡| 亚洲深夜影院| 久久精品日韩一区二区三区| 激情综合视频| 欧美丰满少妇xxxbbb| 日韩亚洲在线观看| 久久精品国产精品亚洲| 在线日韩中文字幕| 欧美女激情福利| 午夜亚洲精品| 欧美大片第1页| 在线视频一区观看| 国产视频精品免费播放| 免费永久网站黄欧美| 中国av一区| 免费一区二区三区| 亚洲午夜未删减在线观看| 国产自产v一区二区三区c| 男女av一区三区二区色多| 亚洲视频你懂的| 免费视频一区| 亚洲欧美色婷婷| 亚洲国产mv| 国产精品日韩久久久| 美女黄色成人网| 亚洲尤物视频在线| 欧美国产另类| 欧美一级淫片播放口| 在线日韩成人| 国产精品久久久久久久久免费桃花| 久久激情综合| 日韩写真在线| 蜜臀av一级做a爰片久久| 亚洲综合999| 亚洲精品综合在线| 国产亚洲精品一区二区| 欧美视频一区二区三区四区| 久久久久久久激情视频| 亚洲免费中文字幕| 91久久亚洲| 久久人91精品久久久久久不卡| 中国av一区| 亚洲黄网站黄| 精品福利电影| 国产亚洲一区二区在线观看 | 黄色亚洲免费| 国产精品你懂的在线| 一区二区毛片| 欧美激情精品久久久久久蜜臀| 欧美亚洲一区二区三区| 亚洲天堂网站在线观看视频| 亚洲三级电影在线观看| 激情亚洲一区二区三区四区| 国产精品视频yy9099| 欧美三区美女| 欧美日产一区二区三区在线观看| 久久综合一区| 久久夜色精品亚洲噜噜国产mv| 性欧美精品高清| 亚洲嫩草精品久久| 一本久道久久综合婷婷鲸鱼| 亚洲精品日韩欧美| 亚洲高清中文字幕| 欧美成人自拍| 欧美国产激情二区三区| 欧美高清视频www夜色资源网| 久久资源在线| 麻豆成人91精品二区三区| 久久久久久久久久看片| 久久久亚洲影院你懂的| 久久久久久九九九九| 可以看av的网站久久看| 麻豆精品视频| 欧美激情视频给我| 亚洲黑丝一区二区| 亚洲精品国产系列| 一本色道久久88综合亚洲精品ⅰ | 国产乱肥老妇国产一区二| 国产精品久久久久久久7电影| 国产精品国产三级国产普通话99| 国产精品麻豆成人av电影艾秋| 国产精品美女xx| 国产一区二三区| 在线日韩av片| 日韩视频一区二区三区在线播放免费观看 | 国产日韩在线看片| 国产一区视频网站| 在线看视频不卡| 亚洲人体影院| 国产精品99久久久久久久女警| 一区二区欧美在线| 亚洲欧美日韩国产| 久久久999精品| 亚洲高清免费视频| 亚洲深爱激情| 久久手机精品视频| 欧美三日本三级三级在线播放|