r6 - 20 Jun 2006 - 15:36:11 - WenDeYou are here: TWiki >  Main Web  > WebLeftBar > STLChina > STLTechArticles

STL¼¼ÊõÎÄÕ²»ÍêÈ«Áбí(STLѧϰʹÓÃÖ¸ÄÏ)

×÷ÕߣºWinter
À´Ô´: ×îÓÅÐãµÄSTLÑ§Ï°ÍøÕ¾

ÔÚÍøÂçÉÏ£¬¹ØÓÚSTLʹÓõÄÓÐÐí¶àÓÅÐãµÄÎĵµ£¬±¾ÎÄÊÕ¼¯ÁËһЩ¾­µäµÄÖÐÎĺÍÓ¢ÎÄÎÄÕ£¬°üº¬STLÖеıê×¼ÈÝÆ÷ vector list set map deque hash_map multiset multimap hash_set string Allocate stream¼°Ëã·¨µÈ¸÷¸ö·½Ã棬²¢»á×ö¼ò¶ÌµÄÄÚÈݽéÉÜºÍÆÀ¼Û£¬²¢Ôö¼ÓÏàÓ¦µÄÁ´½Ó¡£ÒÔºó»áËæÊ±¸üв¹³äеÄÄÚÈÝ£¬Èç¹ûÓÐÅóÓÑ·¢ÏÖ¸üºÃµÄÎÄÕ£¬Çë»Ø¸´ÁôÑÔ£¬ÎÒÒ²»á¼ÓÈëÁбíÖÐ--Winter

1 STLÈëÃŽ̳̣º

±ê׼ģ°å¿â(STL)½éÉÜ ¡ï¡ï¡ï¡ï¡ï

±¾ÎÄÒÔListÈÝÆ÷ΪÀý×Ó£¬½éÉÜÁËSTLµÄ»ù±¾ÄÚÈÝ£¬´ÓÈÝÆ÷µ½µü´úÆ÷£¬ÔÙµ½ÆÕͨº¯Êý£¬¶øÇÒÀý×ӷḻ£¬Í¨Ë×Ò×¶®¡£²»Ê§ÎªSTLµÄÈëÃÅÎÄÕ£¬ÐÂÊÖ²»ÈÝ´í¹ý¡£

STLʵ¼ùÖ¸ÄÏ ¡ï¡ï¡ï¡ï¡ï

ÎÄÕ´ÓSTL»ù´¡ÖªÊ¶½²Æð£¬Öð²½ÉîÈë£¬Éæ¼°µ½ÁËSTL±àд´úÂëµÄ·½·¨¡¢STL´úÂëµÄ±àÒëºÍµ÷ÊÔ¡¢ÃüÃû¿Õ¼ä¡¢STLÖеÄANSI/ISO×Ö·û´®¡¢¸÷ÖÖ²»Í¬ÀàÐ͵ÄÈÝÆ÷¡¢Ä£°å¡¢ÓαꡢËã·¨¡¢·ÖÅäÆ÷¡¢ÈÝÆ÷µÄǶÌ׵ȷ½ÃæµÄÎÊÌ⣬×÷ÕßÔÚÕâÆªÎÄÕÂÖжԶÁÕßÌá³öÁËһЩ½¨Ò飬²¢Ö¸³öÁËʹÓÃSTLʱӦ¸Ã×¢ÒâµÄÎÊÌâ¡£

ÈýÊ®·ÖÖÓÕÆÎÕSTL¡ï¡ï¡ï¡ï

Óиö½ÐkarryµÄÍøÓÑ·­ÒëµÄ¡¶using stl¡·£¬¿ÉÒÔ¿ìËÙä¯ÀÀ£¬´Ó0¿ªÊ¼Á˽âSTL¡£ÖµµÃÒ»¿´¡£

C++ STL¼ò½é ¡ï¡ï

ÎÄÕ´ÓËã·¨¡¢ÈÝÆ÷¡¢µü´úÆ÷Èý·½Ãæ¼òÒª½éÉÜÁËSTL£¬¶ÁÕß¿ÉÒÔ¶ÔSTLÓÐÒ»¼òµ¥Ó³Ïñ¡£

C++ STLÇáËɵ¼Ñ§ ¡ï¡ï¡ï

±¾½Ì³Ì½éÉÜÓйØÑ§Ï°C++ STLµÄÔ¤±¸ÖªÊ¶ºÍSTLµÄÏà¹Ø±³¾°ÖªÊ¶£¬ÊʺÏÏë¶ÔSTL×ö´óÖÂÁ˽âµÄ³õѧÕß¡£

STLѧϰС½á ¡ï¡ï

ÎÄÖнéÉÜSTL»ù´¡ÖªÊ¶£¬ÅäÓÐÒ»¸öÕûÌåʵÀýºÍͼ±í˵Ã÷£¬×îºó»¹×öÁ˼òµ¥µÄЧÂʲâÊÔ¡£

STLʹÓÃÈëÃÅ ¡ï¡ï¡ï

±¾ÎÄÊʺÏÄÇЩÏëÁ¢¼´¿ªÊ¼Ê¹Ó㬶ø²»Ïë¹Ø×¢Ì«¶àSTLËöËéϸ½ÚµÄ³ÌÐòÔ±¡£ÒÔlistΪÀý£¬½²½âÁËÔÚʹÓùý³ÌÖеÄ×¢ÒâÊÂÏî¡£

2 STL ÈÝÆ÷£º

Ïêϸ½â˵STL string ¡ï¡ï¡ï¡ï¡ï

WinterµÄÏêϸ½â˵STLϵÁÐÖ®Ò»£¬¶ÔstringµÄÔ­ÀíºÍ³£ÓÃʹÓýøÐÐÁËÏêϸ½â˵£¬²¢¶ÔstringÔÚʹÓùý³ÌÖеÄ×¢ÒâÊÂÏî½øÐÐÁË×ܽᡣÈç¹ûÄãÏ£Íû¶ÔstringÓÐÈ«ÃæµÄÁ˽⣬ÕâÆªÎÄÕÂÊÇÔٺò»¹ýÁË¡£

ÉîÈëÑо¿ STL Deque ÈÝÆ÷ ¡ï¡ï¡ï¡ï¡ï

ÎÄÕÂÉîÈëµØÑо¿ÁËstd::deque ÈÝÆ÷¡£±¾ÎĽ«ÌÖÂÛÔÚһЩÇé¿öÏÂʹÓÃdeque ±Èvector¸üºÃ¡£¶ÁÍêÕâÆªÎÄÕºó¶ÁÕßÓ¦¸ÃÄܹ»Àí½âÔÚÈÝÁ¿Ôö³¤µÄ¹ý³ÌÖÐdeque ÓëvectorÔÚÄÚ´æ·ÖÅäºÍÐÔÄܵIJ»Í¬±íÏÖ¡£ÀÏÍâдÎÄÕÂȷʵ±È½ÏÑϽ÷£¬ÖµµÃÒ»¿´¡£

STL vector ÈÝÆ÷½éÉÜ ¡ï¡ï¡ï¡ï¡ï

ÕâÆªÎÄÕµÄÄ¿µÄÊÇΪÁ˽éÉÜstd::vector£¬ÈçºÎÇ¡µ±µØÊ¹ÓÃËüÃǵijÉÔ±º¯ÊýµÈ²Ù×÷¡£±¾ÎÄÖл¹ÌÖÂÛÁËÌõ¼þº¯ÊýºÍº¯ÊýÖ¸ÕëÔÚµü´úËã·¨ÖÐʹÓã¬ÈçÔÚremove_if()ºÍfor_each()ÖеÄʹÓá£Í¨¹ýÔĶÁÕâÆªÎÄÕ¶ÁÕßÓ¦¸ÃÄܹ»ÓÐЧµØÊ¹ÓÃvectorÈÝÆ÷£¬¶øÇÒÓ¦¸Ã²»»áÔÙȥʹÓÃCÀàÐ͵Ķ¯Ì¬Êý×éÁË¡£ÓÖÊÇһƪ¾­µä¡£

ѧϰSTL map, STL setÖ®Êý¾Ý½á¹¹»ù´¡¡ï¡ï¡ï

±¾ÎÄÁгö¼¸¸ö»ù±¾µÄSTL mapºÍSTL setµÄÎÊÌ⣬ͨ¹ý½â´ðÕâЩÎÊÌâ½²½âÁËSTL¹ØÁªÈÝÆ÷ÄÚ²¿µÄÊý¾Ý½á¹¹£¬×îºóÌá³öÁ˹ØÓÚUNIX/LINUX×Ô´øÆ½ºâ¶þ²æÊ÷¿âº¯ÊýºÍmap, setÑ¡ÔñÎÊÌ⣬²¢·ÖÎöÁËmap, setµÄÓÅÊÆÖ®´¦¡£¶ÔÓÚÏ£ÍûÉîÈëѧϰSTLºÍÏ£ÍûÁ˽âSTL mapµÈ¹ØÁªÈÝÆ÷µ×²ãÊý¾Ý½á¹¹µÄÅóÓÑÀ´Ëµ£¬ÓÐÒ»¶¨µÄ²Î¿¼¼ÛÖµ

STLÖÐÓÃvector ¸Ä½øÄÚ´æµÄÔÙ·ÖÅä¡ï¡ï¡ï

±¾ÎÄÃèÊöµÄÊÇÒ»Öֺܳ£¼ûµÄÇé¿ö£ºµ±ÄãÔÚij¸ö»º´æÖд洢Êý¾Ýʱ£¬³£³£ÐèÒªÔÚÔËÐÐʱµ÷Õû¸Ã»º´æµÄ´óС£¬ÒÔ±ãÄÜÈÝÄɸü¶àµÄÊý¾Ý¡£±¾ÎĽ«ÌÖÂÛÈçºÎʹÓà STL µÄ vector ½øÐÐÄÚ´æµÄÔÙ·ÖÅä¡£Ô­Àí˵µÄ±È½ÏÏêϸ£¬¶ÔÓÚ³õѧÕ߱ȽÏÊÊÓá£

3 STLÓ¦Óãº

ʹÓÃSTLÁ÷(stream)À´¼ò»¯C++¡°Ḭ̈߳²È«¡±ÈÕÖ¾¼Ç¼¡ï¡ï¡ï¡ï

Á÷ÊÇÒ»ÖÖÇ¿´óµÄÊý¾Ý´¦Àí³éÏó»úÖÆ£¬ËüÔÊÐíÄãµ÷Ó÷ºÐ͵ĶÁ/дº¯Êý£¬²»±Ø¹ØÐÄÊý¾Ý´ÓʲôµØ·½À´¡¢µ½Ê²Ã´µØ·½È¥¡£Ê¹ÓÃÁ÷£¬Í¬ÑùµÄ´úÂë¿É´Ó¿ØÖÆÌ¨¡¢Îļþ¡¢Ì×½Ó×ֵȵط½¶ÁÈ¡Êý¾Ý¡£STLͨ³£²»ÊÇḬ̈߳²È«µÄ£¬±¾ÎÄÌá³öÁËÈçºÎÔÚḬ̈߳²È«µÄ·½Ê½ÏÂʹÓÃÁ÷µÄ·½°¸¡£

Óñê׼ģ°å¿âSTLʵÏÖÎļþ±È½Ï¡ï¡ï¡ï

±¾ÎÄÌÖÂÛÈçºÎʹÓñê׼ģ°å¿â(STL)£¬ÀàÄ£°åºÍº¯ÊýÄ£°å£¬ÒÔ¼°ÆäËü±à³Ì¼¼ÊõÀ´½â¾öʵ¼ÊÎÊÌâ¡£±¾ÎÄÉæ¼°µ½STL°üº¬µÄ¼¯ºÏºÍÏòÁ¿£¬º¯ÊýÄ£°å£¬ÀàÄ£°å£¬³£Á¿¼ìÑ飬³ö´í´¦ÀíºÍʹÓÃSTLµÄÎļþI/O¡£

ÓÃSTL¿ìËÙ±àдiniÅäÖÃÎļþʶ±ðÀà

iniÎļþÊǼ¼ÊõÈËÔ±¾­³£Óõ½µÄÒ»ÖÖϵͳÅäÖ÷½·¨£¬ÈçºÎ¶ÁÈ¡ºÍ¿ìËÙʶ±ðiniÎļþÖеÄÄÚÈÝʵÏÖÆðÀ´±È½Ï·±Ëö¡£STLÇ¿´óµÄ¹¦ÄÜÔÚÓÚÄÜ¿ìËÙµÄʵÏÖÅÅÐò¡¢²éÕÒ¡¢ ʶ±ðµÈ¹¦ÄÜ¡£±¾ÎÄͨ¹ýSTLÖеÄmap£¬string£¬vector,ifstreamµÈ£¬À´¿ìËÙʵÏÖiniÎļþµÄʶ±ðÀàclass IniFile?¡£IniFile¿ÉÒÔʵÏÖ³£¼û²éÕÒ¹¦ÄÜ£¬²¢ÌṩÍêÕûµÄÔ´Âë¡£

4 STLÆäËû£º

±ê×¼¿â£ºSTL AllocatorÄÜ×öʲô¡ï¡ï¡ï¡ï¡ï

±¾ÎĸæËßÄãʲôʱºò²»ÐèÒªAllocator£¬Ê²Ã´Ê±ºòÐèÒªAllocator£¬ÈçºÎ¶¨ÒåAllocator¡£ÅäÓÐÏêϸµÄ´úÂë˵Ã÷¡£Èç¹ûÄãÏ£Íû¶ÔAllocatorÓгõ²½ÈÏʶ£¬ÕâÆªÎÄÕÂ»á¸æËßÄã¡£

Ïêϸ½â˵ STL ÅÅÐò(Sort)¡ï¡ï¡ï¡ï¡ï

STL¼¸ºõ·â×°ÁËËùÓеÄÊý¾Ý½á¹¹ÖеÄËã·¨£¬´ÓÁ´±íµ½¶ÓÁУ¬´ÓÏòÁ¿µ½¶ÑÕ»£¬¶Ôhashµ½¶þ²æÊ÷£¬´ÓËÑË÷µ½ÅÅÐò£¬´ÓÔö¼Óµ½É¾³ý......¿ÉÒÔ˵£¬Èç¹ûÄãÀí½âÁËSTL£¬Äã»á·¢ÏÖÄãÒѲ»ÓþÐÄàÓÚËã·¨±¾Éí£¬´Ó¶øÕ¾ÔÚ¾ÞÈ˵ļç°òÉÏÈ¥¿¼ÂǸü¸ß¼¶µÄÓ¦Óá£ÅÅÐòËã·¨ÊÇÓ¦ÓÃ×îΪ¹ã·ºµÄËã·¨Ö®Ò»¡£±¾ÎÄÏêϸ½éÉÜSTL ÖÐ sort partial_sort nth_element partition µÈËã·¨µÄÓ÷¨ºÍÇø±ð¡£

Effective STLÖÐÎÄ°æ ¡ï¡ï¡ï¡ï¡ï

·ÖΪ50¸öÌõ¿î£¬Ã¿¸öÌõ¿îÒ»¸öÖ÷Ì⣬Ïêϸ½éÉÜÁËSTLÈÝÆ÷¡¢Ëã·¨¡¢µü´úÆ÷¡¢Allocator¡¢Ó¦Óõȣ¬Í¨¹ýÀý×Ó£¬Í¨Ë×Ò×¶®¡£µ«ÊÇÐèÒª¶ÁÕßÓÐÒ»¶¨µÄ»ù´¡ÖªÊ¶£¨ÖÁÉÙÖªµÀvectorÊǸöÈÝÆ÷°É£©£¬Óɲ»Í¬×÷Õß·­Ò룬WinterÒ²·­ÒëÁ˼¸Æª¡£¹²ÓÐ50ƪÎÄÕ£¬Ã¿ÆªÎÄÕÂÏ໥¶ÀÁ¢£¬ÄãÏ뿴ʲô×Ô¼ºÑ¡°É¡£Ç¿ÁÒÍÆ¼ö¡£

³¹µ×ѧϰSTLÖеÄAllocator ¡ï¡ï¡ï¡ï

AllocatorÊÇC++ÓïÑÔ±ê×¼¿âÖÐ×îÉñÃØµÄ²¿·ÖÖ®Ò»¡£ËüÃǺÜÉÙ±»ÏÔʽʹÓ㬱ê׼ҲûÓÐÃ÷È·³öËüÃÇÓ¦¸ÃÔÚʲôʱºò±»Ê¹Óá£ÎÄÕÂÏêϸµØ½éÉÜÁËSTLÖÐAllocatorµÄÓ÷¨ºÍÌØµã¡£Èç¹ûÄãÓн϶àµÄSTL֪ʶ£¬ÓÖÏë¸üÉîÈëµÄÁ˽âSTL Alloc£¬ÕâÆªÎÄÕÂÔٺò»¹ýÁË¡£

STLÖ®¸¸·Ã̸¼¡ï¡ï¡ï¡ï

STLÖ®¸¸Alexander Stepanov½ÓÊÕ¼ÇÕߵIJɷã¬ÎÄÕ¶Ôì¶STL·¢Õ¹ÀúÊ·µÄ×îÍ걸½éÉÜ, ºî½ÝÏÈÉúÔÚËûµÄSTLÓйØÎÄÕÂÀïÍÆ¼ö´ó¼ÒÔĶÁÕâÆªÎÄÕ¡£Ô­ÎÄÔÚSGI STLÉÏÓÐÒ»¸ö°æ±¾£¬ÔÚportSTLÉÏÓÐÒ»¸ö°æ±¾£¬Winter×öÁ˼òµ¥µÄÕûÀí£¬°ÑÁ½¸ö°æ±¾µÄÓ¢ÎĺÍÖÐÎİ汾¶¼×öÁËÏàÓ¦µÄÁ´½Ó¡£»¹¿ÉÒԲο¨×î½üµÄ·ÃÎÊ:[[http://stl.winterxy.com/html/000066.html][¶Ô»°STL Ö®¸¸Alex Stepanov]]¡£

STLµÄ²»Í¬ÊµÏÖ°æ±¾ ¡ï¡ï¡ï

¼òÒª½éÉÜÁËSTLµÄ¼¸¸ö°æ±¾£¬°üÀ¨ HP STL, P.J.Plauger STL¡¢ Rouge Wave STL¡¢ STLport¡¢ SGI STL£¬ËäÈ»ÎÄÕ±Ƚ϶̣¬Èç¹ûÏëÁ˽âSTL°æ±¾ÖªÊ¶£¬»¹ÊÇÖµµÃÒ»¿´µÄ¡£

CUJÎĿ⣺STLÖеÄUnary Predicates¡ï¡ï

±ê×¼ÔËÐпâÖеö·ºÐÍËã·¨ÔÚÔËÐÐʱʹÓÃÁËÒ»ÔªÅж¨Ê½£¨unary predicate£©¡£Àý×ÓÊÇ´øifµÄËã·¨£¬±ÈÈçcount_if()¡¢find_if()¡¢remove_if()¡¢ºÍreplace_if()£¬µ«Ò²ÓÐpartition()ÕâÑù[²»´øif]µÄËã·¨¡£ÔÚ±¾´ÎרÀ¸ÖУ¬ÎÒÃǾͽü¾àÀë½Ó´¥unary predicate£¬¿´ËüÃÇ¿ÉÄÜÒÔ¼°¾ø²»ÄÜ×öʲô¡££¨ÄÚÈݱȽÏרҵÁË£¬Ö»ÊÇ·­ÒëµÃºÃÏñ²»¹»ºÃ£©

ÌåÑéVisual C++.NET 2005ÖеÄSTL¡ï¡ï¡ï¡ï

±¾ÎÄÏêϸ½²½âÁËSTL.netµÄÌØÐÔ£¬ÆäÓÅÊÆ£¬²¢Óгä·ÖµÄʵÀý£¬ÖµµÃÒ»¿´¡£

STLѧϰ×ÊÔ´Áбí¡ï¡ï¡ï¡ï¡ï

±¾ÎÄÖÐÁоÙÁËȨÍþµÄSTL¹Ù·½ÍøÕ¾ºÍSTLÑ§Ï°ÍøÕ¾£¬²¢ÌṩÁ˾­µäµÄSTL½Ì³ÌÍÆ¼öºÍµç×ÓÊéÏÂÔØ£¬²»¿É´í¹ý¡£


  • Set MYTITLE = STL¼¼ÊõÎÄÕ²»ÍêÈ«Áбí(STLѧϰʹÓÃÖ¸ÄÏ)
Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r6 < r5 < r4 < r3 < r2 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback