锘??xml version="1.0" encoding="utf-8" standalone="yes"?>夜夜爽夜夜爽精品视频,亚洲精品资源,欧美日韩精品欧美日韩精品一 http://m.shnenglu.com/lovefeel2004/category/11592.html涓撴敞C/C++錛孡inux zh-cn Thu, 24 Jun 2010 07:36:45 GMT Thu, 24 Jun 2010 07:36:45 GMT 60 STL vector 瀹瑰櫒浠嬬粛 http://m.shnenglu.com/lovefeel2004/archive/2010/06/23/118556.html騫芥ⅵ鏂板獎 騫芥ⅵ鏂板獎 Wed, 23 Jun 2010 05:56:00 GMT http://m.shnenglu.com/lovefeel2004/archive/2010/06/23/118556.html http://m.shnenglu.com/lovefeel2004/comments/118556.html http://m.shnenglu.com/lovefeel2004/archive/2010/06/23/118556.html#Feedback 0 http://m.shnenglu.com/lovefeel2004/comments/commentRss/118556.html http://m.shnenglu.com/lovefeel2004/services/trackbacks/118556.html 浠嬬粛
榪欑瘒鏂囩珷鐨勭洰鐨勬槸涓轟簡浠嬬粛 std::vector 錛屽浣曟伆褰撳湴浣跨敤瀹冧滑鐨勬垚鍛樺嚱鏁扮瓑鎿嶄綔銆傛湰鏂囦腑榪樿璁轟簡鏉′歡鍑芥暟鍜屽嚱鏁版寚閽堝湪榪唬綆楁硶涓嬌鐢紝濡傚湪 remove_if() 鍜?/span>for_each() 涓殑浣跨敤銆傞氳繃闃呰榪欑瘒鏂囩珷璇昏呭簲璇ヨ兘澶熸湁鏁堝湴浣跨敤 vector 瀹瑰櫒錛岃屼笖搴旇涓嶄細鍐嶅幓浣跨敤 C 綾誨瀷鐨勫姩鎬佹暟緇勪簡銆?/span>
Vector 鎬昏
vector 鏄?/span>C++ 鏍囧噯妯℃澘搴撲腑鐨勯儴鍒嗗唴瀹癸紝瀹冩槸涓涓鍔熻兘鐨勶紝鑳藉鎿嶄綔澶氱鏁版嵁緇撴瀯鍜岀畻娉曠殑妯℃澘綾誨拰鍑芥暟搴撱?/span>vector 涔嬫墍浠ヨ璁や負鏄竴涓鍣紝鏄洜涓哄畠鑳藉鍍忓鍣ㄤ竴鏍峰瓨鏀懼悇縐嶇被鍨嬬殑瀵硅薄錛岀畝鍗曞湴璇達紝 vector 鏄竴涓兘澶熷瓨鏀句換鎰忕被鍨嬬殑鍔ㄦ佹暟緇勶紝鑳藉澧炲姞鍜屽帇緙╂暟鎹?/span>
涓轟簡鍙互浣跨敤 vector 錛屽繀欏誨湪浣犵殑澶存枃浠朵腑鍖呭惈涓嬮潰鐨勪唬鐮侊細
vector 灞炰簬 std 鍛藉悕鍩熺殑錛屽洜姝ら渶瑕侀氳繃鍛藉悕闄愬畾錛屽涓嬪畬鎴愪綘鐨勪唬鐮侊細
using std::vector;
vector< int > vInts;
鎴栬呰繛鍦ㄤ竴璧鳳紝浣跨敤鍏ㄥ悕錛?/span>
寤鴻浣跨敤鍏ㄥ眬鐨勫懡鍚嶅煙鏂瑰紡錛?/span>
鍦ㄥ悗闈㈢殑鎿嶄綔涓叏灞鐨勫懡鍚嶅煙鏂瑰紡浼氶犳垚涓浜涢棶棰樸?/span>vector 瀹瑰櫒鎻愪緵浜嗗緢澶氭帴鍙o紝鍦ㄤ笅闈㈢殑琛ㄤ腑鍒楀嚭 vector 鐨勬垚鍛樺嚱鏁板拰鎿嶄綔銆?/span>
Vector 鎴愬憳鍑芥暟
鍑芥暟
琛ㄨ堪
c.assign(beg,end)
c.assign(n,elem)
灝?/span>[beg; end) 鍖洪棿涓殑鏁版嵁璧嬪肩粰 c 銆?/span>
灝?/span>n 涓?/span>elem 鐨勬嫹璐濊祴鍊肩粰 c 銆?/span>
c.at(idx)
浼犲洖绱㈠紩 idx 鎵鎸囩殑鏁版嵁錛屽鏋?/span>idx 瓚婄晫錛屾姏鍑?/span>out_of_range 銆?/span>
c.back()
浼犲洖鏈鍚庝竴涓暟鎹紝涓嶆鏌ヨ繖涓暟鎹槸鍚﹀瓨鍦ㄣ?/span>
c.begin()
浼犲洖榪唬鍣ㄩ噸鐨勫彲涓涓暟鎹?/span>
c.capacity()
榪斿洖瀹瑰櫒涓暟鎹釜鏁般?/span>
c.clear()
縐婚櫎瀹瑰櫒涓墍鏈夋暟鎹?/span>
c.empty()
鍒ゆ柇瀹瑰櫒鏄惁涓虹┖銆?/span>
c.end()
鎸囧悜榪唬鍣ㄤ腑鐨勬渶鍚庝竴涓暟鎹湴鍧銆?/span>
c.erase(pos)
c.erase(beg,end)
鍒犻櫎 pos 浣嶇疆鐨勬暟鎹紝浼犲洖涓嬩竴涓暟鎹殑浣嶇疆銆?/span>
鍒犻櫎 [beg,end) 鍖洪棿鐨勬暟鎹紝浼犲洖涓嬩竴涓暟鎹殑浣嶇疆 銆?/span>
c.front()
浼犲洖鍦頒竴涓暟鎹?/span>
get_allocator
浣跨敤鏋勯犲嚱鏁拌繑鍥炰竴涓嫹璐濄?/span>
c.insert(pos,elem)
c.insert(pos,n,elem)
c.insert(pos,beg,end)
鍦?/span>pos 浣嶇疆鎻掑叆涓涓?/span>elem 鎷瘋礉錛屼紶鍥炴柊鏁版嵁浣嶇疆銆?/span>
鍦?/span>pos 浣嶇疆鎻掑叆 n 涓?/span>elem 鏁版嵁銆傛棤榪斿洖鍊箋?/span>
鍦?/span>pos 浣嶇疆鎻掑叆鍦?/span>[beg,end) 鍖洪棿鐨勬暟鎹傛棤榪斿洖鍊箋?/span>
c.max_size()
榪斿洖瀹瑰櫒涓渶澶ф暟鎹殑鏁伴噺銆?/span>
c.pop_back()
鍒犻櫎鏈鍚庝竴涓暟鎹?/span>
c.push_back(elem)
鍦ㄥ熬閮ㄥ姞鍏ヤ竴涓暟鎹?/span>
c.rbegin()
浼犲洖涓涓嗗悜闃熷垪鐨勭涓涓暟鎹?/span>
c.rend()
浼犲洖涓涓嗗悜闃熷垪鐨勬渶鍚庝竴涓暟鎹殑涓嬩竴涓綅緗?/span>
c.resize(num)
閲嶆柊鎸囧畾闃熷垪鐨勯暱搴︺?/span>
c.reserve()
淇濈暀閫傚綋鐨勫閲忋?/span>
c.size()
榪斿洖瀹瑰櫒涓疄闄呮暟鎹殑涓暟銆?/span>
c1.swap(c2)
swap(c1,c2)
灝?/span>c1 鍜?/span>c2 鍏冪礌浜掓崲銆?/span>
鍚屼笂鎿嶄綔銆?/span>
vector<Elem> c
vector <Elem> c1(c2)
vector <Elem> c(n)
vector <Elem> c(n, elem)
vector <Elem> c(beg,end)
c.~ vector <Elem>()
鍒涘緩涓涓┖鐨?/span>vector 銆?/span>
澶嶅埗涓涓?/span>vector 銆?/span>
鍒涘緩涓涓?/span>vector 錛屽惈鏈?/span>n 涓暟鎹紝鏁版嵁鍧囧凡緙虹渷鏋勯犱駭鐢?/span>銆?/span>
鍒涘緩涓涓惈鏈?/span>n 涓?/span>elem 鎷瘋礉鐨?/span>vector 銆?/span>
鍒涘緩涓涓互 [beg;end) 鍖洪棿鐨?/span>vector 銆?/span>
閿姣佹墍鏈夋暟鎹紝閲婃斁鍐呭瓨銆?/span>
Vector 鎿嶄綔
鍑芥暟
鎻忚堪
operator []
榪斿洖瀹瑰櫒涓寚瀹氫綅緗殑涓涓紩鐢ㄣ?/span>
鍒涘緩涓涓?/span> vector
vector 瀹瑰櫒鎻愪緵浜嗗縐嶅垱寤烘柟娉曪紝涓嬮潰浠嬬粛鍑犵甯哥敤鐨勩?/span>
鍒涘緩涓涓?/span>Widget 綾誨瀷鐨勭┖鐨?/span>vector 瀵硅薄錛?/span>
vector<Widget> vWidgets;
// ------
// |
// |- Since vector is a container, its member functions
// operate on iterators and the container itself so
// it can hold objects of any type.
鍒涘緩涓涓寘鍚?/span>500 涓?/span>Widget 綾誨瀷鏁版嵁鐨?/span>vector 錛?/span>
vector<Widget> vWidgets(500);
鍒涘緩涓涓寘鍚?/span>500 涓?/span>Widget 綾誨瀷鏁版嵁鐨?/span>vector 錛屽茍涓旈兘鍒濆鍖栦負 0 錛?/span>
vector<Widget> vWidgets(500, Widget(0));
鍒涘緩涓涓?/span>Widget 鐨勬嫹璐濓細
vector<Widget> vWidgetsFromAnother(vWidgets);
鍚?/span> vector 娣誨姞涓涓暟鎹?/span>
vector 娣誨姞鏁版嵁鐨勭己鐪佹柟娉曟槸 push_back() 銆?/span>push_back() 鍑芥暟琛ㄧず灝嗘暟鎹坊鍔犲埌 vector 鐨勫熬閮紝騫舵寜闇瑕佹潵鍒嗛厤鍐呭瓨銆備緥濡傦細鍚?/span>vector<Widget> 涓坊鍔?/span>10 涓暟鎹紝闇瑕佸涓嬬紪鍐欎唬鐮侊細
for (int i= 0;i<10; i++)
vWidgets.push_back(Widget(i));
鑾峰彇 vector 涓埗瀹氫綅緗殑鏁版嵁
寰堝鏃跺欐垜浠笉蹇呰鐭ラ亾 vector 閲岄潰鏈夊灝戞暟鎹紝 vector 閲岄潰鐨勬暟鎹槸鍔ㄦ佸垎閰嶇殑錛屼嬌鐢?/span>push_back() 鐨勪竴緋誨垪鍒嗛厤絀洪棿甯稿父鍐沖畾浜庢枃浠舵垨涓浜涙暟鎹簮銆傚鏋滀綘鎯崇煡閬?/span>vector 瀛樻斁浜嗗灝戞暟鎹紝浣犲彲浠ヤ嬌鐢?/span>empty() 銆傝幏鍙?/span>vector 鐨勫ぇ灝忥紝鍙互浣跨敤 size() 銆備緥濡傦紝濡傛灉浣犳兂鑾峰彇涓涓?/span>vector v 鐨勫ぇ灝忥紝浣嗕笉鐭ラ亾瀹冩槸鍚︿負絀猴紝鎴栬呭凡緇忓寘鍚簡鏁版嵁錛屽鏋滀負絀烘兂璁劇疆涓?/span>-1 錛屼綘鍙互浣跨敤涓嬮潰鐨勪唬鐮佸疄鐜幫細
int nSize = v.empty() ? -1 : static_cast < int >(v.size());
璁塊棶 vector 涓殑鏁版嵁
浣跨敤涓ょ鏂規硶鏉ヨ闂?/span>vector 銆?/span>
1銆?span> vector::at()
2銆?span> vector::operator[]
operator[] 涓昏鏄負浜嗕笌 C 璇█榪涜鍏煎銆傚畠鍙互鍍?/span>C 璇█鏁扮粍涓鏍鋒搷浣溿備絾 at() 鏄垜浠殑棣栭夛紝鍥犱負 at() 榪涜浜嗚竟鐣屾鏌ワ紝濡傛灉璁塊棶瓚呰繃浜?/span>vector 鐨勮寖鍥達紝灝嗘姏鍑轟竴涓緥澶栥傜敱浜?/span>operator[] 瀹規槗閫犳垚涓浜涢敊璇紝鎵鏈夋垜浠緢灝戠敤瀹冿紝涓嬮潰榪涜楠岃瘉涓涓嬶細
鍒嗘瀽涓嬮潰鐨勪唬鐮侊細
vector< int > v;
v.reserve(10);
for ( int i=0; i<7; i++)
v.push_back(i);
try
{
int iVal1 = v[7]; // not bounds checked - will not throw
int iVal2 = v.at(7); // bounds checked - will throw if out of range
}
catch ( const exception& e)
{
cout << e.what();
}
鎴戜滑浣跨敤 reserve() 鍒嗛厤浜?/span>10 涓?/span>int 鍨嬬殑絀洪棿錛屼絾騫朵笉娌℃湁鍒濆鍖栥傚涓嬪浘鎵紺猴細
浣犲彲浠ュ湪榪欎釜浠g爜涓皾璇曚笉鍚屾潯浠訛紝瑙傚療瀹冪殑緇撴灉錛屼絾鏄棤璁轟綍鏃朵嬌鐢?/span>at() 錛岄兘鏄紜殑銆?/span>
鍒犻櫎 vector 涓殑鏁版嵁
vector 鑳藉闈炲父瀹規槗鍦版坊鍔犳暟鎹紝涔熻兘寰堟柟渚垮湴鍙栧嚭鏁版嵁錛屽悓鏍?/span>vector 鎻愪緵浜?/span>erase() 錛?/span>pop_back() 錛?/span>clear() 鏉ュ垹闄ゆ暟鎹紝褰撲綘鍒犻櫎鏁版嵁鐨勬椂鍊欙紝浣犲簲璇ョ煡閬撹鍒犻櫎灝鵑儴鐨勬暟鎹紝鎴栬呮槸鍒犻櫎鎵鏈夋暟鎹紝榪樻槸涓埆鐨勬暟鎹傚湪鑰冭檻鍒犻櫎絳夋搷浣滀箣鍓嶈鎴戜滑闈欎笅鏉ヨ冭檻涓涓嬪湪 STL 涓殑涓浜涘簲鐢ㄣ?/span>
Remove_if() 綆楁硶
鐜板湪鎴戜滑鑰冭檻鎿嶄綔閲岄潰鐨勬暟鎹傚鏋滆浣跨敤 remove_if() 錛屾垜浠渶瑕佸湪澶存枃浠朵腑鍖呭惈濡備笅浠g爜錛氾細
Remove_if()鏈変笁涓弬鏁幫細
1銆?span>
iterator _First 錛氭寚鍚戠涓涓暟鎹殑榪唬鎸囬拡銆?/span>
2銆?span>
iterator _Last 錛氭寚鍚戞渶鍚庝竴涓暟鎹殑榪唬鎸囬拡銆?/span>
3銆?span>
predicate _Pred 錛氫竴涓彲浠ュ榪唬鎿嶄綔鐨勬潯浠跺嚱鏁般?/span>
鏉′歡鍑芥暟
鏉′歡鍑芥暟鏄竴涓寜鐓х敤鎴峰畾涔夌殑鏉′歡榪斿洖鏄垨鍚︾殑緇撴灉錛屾槸鏈鍩烘湰鐨勫嚱鏁版寚閽堬紝鎴栬呮槸涓涓嚱鏁板璞°傝繖涓嚱鏁板璞¢渶瑕佹敮鎸佹墍鏈夌殑鍑芥暟璋冪敤鎿嶄綔錛岄噸杞?/span>operator()() 鎿嶄綔銆?/span>remove_if() 鏄氳繃 unary_function 緇ф壙涓嬫潵鐨勶紝鍏佽浼犻掓暟鎹綔涓烘潯浠躲?/span>
渚嬪錛屽亣濡備綘鎯充粠涓涓?/span>vector<CString> 涓垹闄ゅ尮閰嶇殑鏁版嵁錛屽鏋滃瓧涓蹭腑鍖呭惈浜嗕竴涓鹼紝浠庤繖涓煎紑濮嬶紝浠庤繖涓肩粨鏉熴傞鍏堜綘搴旇寤虹珛涓涓暟鎹粨鏋勬潵鍖呭惈榪欎簺鏁版嵁錛岀被浼間唬鐮佸涓嬶細
# include <functional>
enum findmodes
{
FM_INVALID = 0,
FM_IS,
FM_STARTSWITH,
FM_ENDSWITH,
FM_CONTAINS
};
typedef struct tagFindStr
{
UINT iMode;
CString szMatchStr;
} FindStr;
typedef FindStr* LPFINDSTR;
鐒跺悗澶勭悊鏉′歡鍒ゆ柇錛?/span>
class FindMatchingString
: public std::unary_function<CString, bool >
{
public :
FindMatchingString( const LPFINDSTR lpFS) : m_lpFS(lpFS) {}
bool operator()(CString& szStringToCompare) const
{
bool retVal = false ;
switch (m_lpFS->iMode)
{
case FM_IS:
{
retVal = (szStringToCompare == m_lpFDD->szMatchStr);
break ;
}
case FM_STARTSWITH:
{
retVal = (szStringToCompare.Left(m_lpFDD->szMatchStr.GetLength())
== m_lpFDD->szWindowTitle);
break ;
}
case FM_ENDSWITH:
{
retVal = (szStringToCompare.Right(m_lpFDD->szMatchStr.GetLength())
== m_lpFDD->szMatchStr);
break ;
}
case FM_CONTAINS:
{
retVal = (szStringToCompare.Find(m_lpFDD->szMatchStr) != -1);
break ;
}
}
return retVal;
}
private :
LPFINDSTR m_lpFS;
};
閫氳繃榪欎釜鎿嶄綔浣犲彲浠ヤ粠 vector 涓湁鏁堝湴鍒犻櫎鏁版嵁錛?/span>
// remove all strings containing the value of
// szRemove from vector<CString> vs.
FindStr fs;
fs.iMode = FM_CONTAINS;
fs.szMatchStr = szRemove;
vs.erase(std::remove_if(vs.begin(), vs.end(), FindMatchingString(&fs)), vs.end());
Remove_if() 鑳藉仛浠涔堬紵
浣犲彲鑳戒細鐤戞儜錛屽浜庝笂闈㈤偅涓緥瀛愬湪璋冪敤 remove_if() 鐨勬椂鍊欒繕瑕佷嬌鐢?/span>erase() 鍛紵榪欐槸鍥犱負澶у騫朵笉鐔熸倝 STL 涓殑綆楁硶銆?/span>Remove(),remove_if( ) 絳夋墍鏈夌殑縐誨嚭鎿嶄綔閮芥槸寤虹珛鍦ㄤ竴涓凱浠h寖鍥翠笂鐨勶紝閭d箞涓嶈兘鎿嶄綔瀹瑰櫒涓殑鏁版嵁銆傛墍浠ュ湪浣跨敤 remove_if() 錛屽疄闄呬笂鎿嶄綔鐨勬椂瀹瑰櫒閲屾暟鎹殑涓婇潰鐨勩傛濊冧笂闈㈢殑渚嬪瓙錛?/span>
1銆?span>
szRemove = “o”.
2銆?span> vs 瑙佷笅闈㈠浘琛ㄤ腑鐨勬樉紺恒?br>
瑙傚療榪欎釜緇撴灉錛屾垜浠彲浠ョ湅鍒?/span>remove_if() 瀹為檯涓婃槸鏍規嵁鏉′歡瀵硅凱浠e湴鍧榪涜浜嗕慨鏀癸紝鍦ㄦ暟鎹殑鍚庨潰瀛樺湪涓浜涙畫浣欑殑鏁版嵁錛岄偅浜涢渶瑕佸垹闄ょ殑鏁版嵁銆傚墿涓嬬殑鏁版嵁鐨勪綅緗彲鑳戒笉鏄師鏉ョ殑鏁版嵁錛屼絾浠栦滑鏄笉鐭ラ亾鐨勩?/span>
璋冪敤 erase() 鏉ュ垹闄ら偅浜涙畫浣欑殑鏁版嵁銆傛敞鎰忎笂闈緥瀛愪腑閫氳繃 erase() 鍒犻櫎 remove_if() 鐨勭粨鏋滃拰 vs.enc() 鑼冨洿鐨勬暟鎹?/span>
鍘嬬緝涓涓噧鑲跨殑 vector
寰堝鏃跺欏ぇ閲忕殑鍒犻櫎鏁版嵁錛屾垨鑰呴氳繃浣跨敤 reserve() 錛岀粨鏋?/span>vector 鐨勭┖闂磋繙榪滃ぇ浜庡疄闄呴渶瑕佺殑銆傛墍鏈夐渶瑕佸帇緙?/span>vector 鍒板畠瀹為檯鐨勫ぇ灝忋?/span>resize() 鑳藉澧炲姞 vector 鐨勫ぇ灝忋?/span>Clear() 浠呬粎鑳藉鏀瑰彉緙撳瓨鐨勫ぇ灝忥紝鎵鏈夌殑榪欎簺瀵逛簬 vector 閲婃斁鍐呭瓨絳変節闈炲父閲嶈浜嗐傚浣曟潵瑙e喅榪欎簺闂鍛紝璁╂垜浠潵鎿嶄綔涓涓嬨?/span>
鎴戜滑鍙互閫氳繃涓涓?/span>vector 鍒涘緩鍙︿竴涓?/span>vector 銆傝鎴戜滑鐪嬬湅榪欏皢鍙戠敓浠涔堛傚亣瀹氭垜浠凡緇忔湁涓涓?/span>vector v 錛屽畠鐨勫唴瀛樺ぇ灝忎負 1000 錛屽綋鎴戜滑璋冪敤 size() 鐨勬椂鍊欙紝瀹冪殑澶у皬浠呬負 7 銆傛垜浠氮璐逛簡澶ч噺鐨勫唴瀛樸傝鎴戜滑鍦ㄥ畠鐨勫熀紜涓婂垱寤轟竴涓?/span>vector 銆?/span>
std::vector<CString> vNew(v);
cout << vNew.capacity();
vNew.capacity() 榪斿洖鐨勬槸 7 銆傝繖璇存槑鏂板垱寤虹殑鍙槸鏍規嵁瀹為檯澶у皬鏉ュ垎閰嶇殑絀洪棿銆傜幇鍦ㄦ垜浠笉鎯抽噴鏀?/span>v 錛屽洜涓烘垜浠鍦ㄥ叾瀹冨湴鏂圭敤鍒板畠錛屾垜浠彲浠ヤ嬌鐢?/span>swap() 灝?/span>v 鍜?/span>vNew 浜掔浉浜ゆ崲涓涓嬶紵
vNew.swap(v);
cout << vNew.capacity();
cout << v.capacity();
鏈夎叮鐨勬槸錛?/span>vNew.capacity() 鏄?/span>1000 錛?/span>鑰?/span>v.capacity() 鏄?/span>7 銆?/span>
鐜板湪鏄揪鍒版垜鐨勭洰鐨勪簡錛屼絾鏄茍涓嶆槸寰堝ソ鐨勮В鍐蟲柟娉曪紝鎴戜滑鍙互鍍忎笅闈㈣繖涔堝啓錛?/span>
std::vector<CString>(v).swap(v);
浣犲彲浠ョ湅鍒版垜浠仛浜嗕粈涔堬紵鎴戜滑鍒涘緩浜嗕竴涓復鏃跺彉閲忎唬鏇塊偅涓懡鍚嶇殑錛岀劧鍚庝嬌鐢?/span>swap() , 榪欐牱鎴戜滑灝卞幓鎺変簡涓嶅繀瑕佺殑絀洪棿錛屽緱鍒板疄闄呭ぇ灝忕殑 v 銆?/span>
緇撹
鎴戝笇鏈涜繖涓枃妗e彲浠ョ粰閭d簺浣跨敤 STL vector 瀹瑰櫒鐨勫紑鍙戣呭緢鏈変環鍊肩殑鍙傝冦傛垜涔熷笇鏈涢氳繃闃呰榪欑瘒鏂囩珷浣犲彲浠ユ斁蹇冨湴浣跨敤 vector 鏉ヤ唬鏇?/span>C 璇█涓殑鏁版嵁浜嗐?/span>
鍙傝?/span>
Plauger, P.J. Standard C++ Library Reference. February, 2003. MSDN.
Schildt, Herbert. C++ from the Ground Up, Second Edition. Berkeley : 1998.
Sutter, Herb. More Exceptional C++. Indianapolis : 2002.
]]>C++ STL緙栫▼杞繪澗鍏ラ棬 http://m.shnenglu.com/lovefeel2004/archive/2010/06/02/116947.html騫芥ⅵ鏂板獎 騫芥ⅵ鏂板獎 Tue, 01 Jun 2010 16:17:00 GMT http://m.shnenglu.com/lovefeel2004/archive/2010/06/02/116947.html http://m.shnenglu.com/lovefeel2004/comments/116947.html http://m.shnenglu.com/lovefeel2004/archive/2010/06/02/116947.html#Feedback 0 http://m.shnenglu.com/lovefeel2004/comments/commentRss/116947.html http://m.shnenglu.com/lovefeel2004/services/trackbacks/116947.html 銆銆浣滀負C++鏍囧噯涓嶅彲緙哄皯鐨勪竴閮ㄥ垎錛孲TL搴旇鏄笚閫忓湪C++紼嬪簭鐨勮瑙掕惤钀介噷鐨勩係TL涓嶆槸瀹為獙瀹ら噷鐨勫疇鍎匡紝涔熶笉鏄▼搴忓憳妗屼笂鐨勬憜璁撅紝濂圭殑嬋鍔ㄤ漢蹇冨茍闈炴槞鑺變竴鐜般傛湰鏁欑▼鏃ㄥ湪浼犳挱鍜屾櫘鍙奡TL鐨勫熀紜鐭ヨ瘑錛岃嫢鑳藉熸鏈轟細涓篠TL鐨勬帹騫垮仛浜涘姏鎵鑳藉強鐨勪簨鎯咃紝鍒頒篃鏄歡璁╀漢鎰夊揩鐨勪簨鎯呫?span class=Apple-converted-space> 銆銆1 鍒濊瘑STL錛氳В絳斾竴浜涚枒闂銆1.1 涓涓渶鍏沖績鐨勯棶棰橈細浠涔堟槸STL縐戝棰嗗煙閲屾墍甯哥敤鐨勫熀鏈暟鎹粨鏋勫拰鍩烘湰綆楁硶銆備負騫垮ぇC++紼嬪簭鍛樹滑鎻愪緵浜嗕竴涓彲鎵╁睍鐨勫簲鐢ㄦ鏋訛紝楂樺害浣撶幇浜?a class=article style="FONT-SIZE: 14px; COLOR: rgb(0,0,255); WORD-BREAK: break-all; LINE-HEIGHT: 19px; TEXT-DECORATION: none" target=_blank>杞歡鐨勫彲澶嶇敤鎬с傝繖縐嶇幇璞℃湁浜涚被浼間簬Microsoft Visual C++涓殑MFC錛圡icrosoft Foundation Class Library錛夛紝鎴栬呮槸Borland C++ Builder涓殑VCL(Visual Component Library)錛屽浜庢浜岃咃紝澶у涓瀹氫笉浼氶檶鐢熷惂銆?br style="WORD-BREAK: break-all"> 銆銆"浠涔堟槸STL錛?錛屽亣濡備綘瀵筍TL榪樼煡涔嬬敋灝戯紝閭d箞鎴戞兂錛屼綘涓瀹氬緢鎯崇煡閬撹繖涓棶棰樼殑絳旀錛屽潶鐜囧湴璁詫紝瑕佹寚鏈涚敤鐭煭鏁拌█灝嗚繖涓棶棰橀槓榪版竻妤氾紝涔熷喅闈炴槗浜嬨傚洜姝わ紝濡傛灉浣犲湪鐪嬪畬鏈妭涔嬪悗榪樻槸瑙夊緱浼兼噦闈炴噦錛屽ぇ鍙笉蹇呯潃鎬ワ紝鍦ㄩ槄璇諱簡鍚庣畫鍐呭涔嬪悗錛岀浉淇′綘瀵筍TL鐨勮璇嗭紝灝嗕細鎰堝姞娓呮櫚銆佸噯紜拰瀹屾暣銆備笉榪囷紝涓婅堪榪欑暘璇濆惉璧鋒潵鏄惁鏈夌偣鍍忔槸鍦ㄤ負鑷繁緋熺硶鐨勮〃杈捐兘鍔涘紑鑴辯姜璐e憿錛?錛?span class=Apple-converted-space> 銆銆涓嶇煡閬撲綘鏄惁鏈夎繃榪欐牱鐨勭粡鍘嗐傚湪浣犲噯澶囩潃鎵嬪畬鎴愭暟鎹粨鏋勮佸笀鎵甯冪疆鐨勫搴綔涓氭椂錛屾垨鑰呭湪浣犱負浣犳墍璐熻矗鐨勬煇涓蔣浠墮」鐩腑娣誨姞涓欏規柊鍔熻兘鏃訛紝浣犲彂鐜伴渶瑕佺敤鍒頒竴涓摼琛?List)鎴栬呮槸鏄犲皠琛紙Map錛変箣綾葷殑涓滆タ錛屼絾鏄墜澶村茍娌℃湁鐜版垚鐨勪唬鐮併備簬鏄湪浣犲紑濮嬫寮忚冭檻紼嬪簭鍔熻兘涔嬪墠錛屾墜宸ュ疄鐜癓ist鎴栬匨ap鏄笉鍙伩鍏嶇殑銆備簬鏄?#8230;…錛屾渶緇堜綘欏哄埄瀹屾垚浜嗕換鍔°傛垨璁告鏃訛紝浣滀負涓涓叿鏈夎緝楂樼礌鍏葷殑紼嬪簭鍛樼殑浣犺繕涓嶈偗緗紤錛堟垨鑰呮槸涓涓枩嬈㈠伔鎳掔殑浼樼瓑鐢?錛夛紝鍥犱負浣犱細鎯沖埌錛屽鏋滀互鍚庤繕閬囧埌榪欐牱鐨勬儏鍐墊庝箞鍔烇紵娌℃湁蹇呰鍐嶅仛涓閬嶅悓鏍風殑浜嬫儏鍚э紒 銆銆濡傛灉璇翠笂榪拌繖縐嶆儏褰㈡瘡澶╅兘鍦ㄥ彂鐢燂紝鎴栬鏈夌偣澶稿紶銆備絾鏄紝濡傛灉璇存暣涓蔣浠墮鍩熼噷錛屾暟鍗佸勾鏉ョ‘瀹為兘鍦ㄤ負浜嗕竴涓洰鏍囪屽鏂?-鍙鐢ㄦэ紙reusability錛夛紝榪欑湅璧鋒潵浼間箮騫朵笉澶稿紶銆備粠鏈鏃╃殑闈㈠悜榪囩▼鐨勫嚱鏁板簱錛屽埌闈㈠悜瀵硅薄鐨?a style="FONT-SIZE: 12px; COLOR: rgb(78,78,78); WORD-BREAK: break-all; TEXT-DECORATION: none" >紼嬪簭璁捐鎬濇兂錛屽埌鍚勭緇勪歡鎶鏈紙濡傦細COM銆丒JB錛夛紝鍒拌璁℃ā寮忥紙design pattern錛夌瓑絳夈傝孲TL涔熷湪鍋氱潃綾諱技鐨勪簨鎯咃紝鍚屾椂鍦ㄥ畠鑳屽悗钑存兜鐫涓縐嶆柊鐨勭▼搴忚璁℃濇兂--娉涘瀷鍖栬璁★紙generic programming錛夈?span class=Apple-converted-space> 銆銆緇х畫涓婇潰鎻愬埌鐨勯偅涓緥瀛愶紝鍋囧浣犳妸List鎴栬卪ap瀹屽ソ鐨勪繚鐣欎簡涓嬫潵錛屾鍦ㄦ殫鑷緱鎰忋備笖鎱紝濡傛灉涓嬩竴鍥炵殑List閲屾斁鐨勪笉鏄誕鐐規暟鑰屾槸鏁存暟鍛紵濡傛灉浣犳墍瀹炵幇鐨凪ap鍦ㄦ晥鐜囦笂鎬繪槸浠や綘涓嶅お婊℃剰騫朵笖鏈夋椂榪樹細鍑轟簺bug鍛紵浣犺濡備綍闈㈠榪欎簺闂錛熶嬌鐢⊿TL鏄竴涓笉閿欑殑閫夋嫨錛岀‘瀹炲姝わ紝STL鍙互婕備寒鍦拌В鍐充笂闈㈡彁鍒扮殑榪欎簺闂錛屽敖綆′綘榪樺彲浠ュ姹傚叾浠栨柟娉曘?br>銆璇翠簡鍗婂ぉ錛屽埌搴昐TL鏄粈涔堜笢瑗垮憿錛?span class=Apple-converted-space> 銆銆STL錛圫tandard Template Library錛夛紝鍗蟲爣鍑嗘ā鏉垮簱錛屾槸涓涓叿鏈夊伐涓氬己搴︾殑錛岄珮鏁堢殑C++紼嬪簭搴撱傚畠琚綰充簬C++鏍囧噯紼嬪簭搴擄紙C++ Standard Library錛変腑錛屾槸ANSI/ISO C++鏍囧噯涓渶鏂扮殑涔熸槸鏋佸叿闈╁懡鎬х殑涓閮ㄥ垎銆傝搴撳寘鍚簡璇稿鍦?a class=article style="FONT-SIZE: 14px; COLOR: rgb(0,0,255); WORD-BREAK: break-all; LINE-HEIGHT: 19px; TEXT-DECORATION: none" target=_blank>璁$畻鏈?/a> 銆銆浠庨昏緫灞傛鏉ョ湅錛屽湪STL涓綋鐜頒簡娉涘瀷鍖栫▼搴忚璁$殑鎬濇兂錛坓eneric programming錛夛紝寮曞叆浜嗚澶氭柊鐨勫悕璇嶏紝姣斿鍍忛渶姹傦紙requirements錛夛紝姒傚康錛坈oncept錛夛紝妯″瀷錛坢odel錛夛紝瀹瑰櫒錛坈ontainer錛夛紝綆楁硶錛坅lgorithmn錛夛紝榪唬瀛愶紙iterator錛夌瓑銆備笌OOP錛坥bject-oriented programming錛変腑鐨勫鎬侊紙polymorphism錛変竴鏍鳳紝娉涘瀷涔熸槸涓縐?a class=article style="FONT-SIZE: 14px; COLOR: rgb(0,0,255); WORD-BREAK: break-all; LINE-HEIGHT: 19px; TEXT-DECORATION: none" target=_blank>杞歡鐨勫鐢ㄦ妧鏈?span class=Apple-converted-space> 銆銆浠庡疄鐜板眰嬈$湅錛屾暣涓猄TL鏄互涓縐嶇被鍨嬪弬鏁板寲錛坱ype parameterized錛夌殑鏂瑰紡瀹炵幇鐨勶紝榪欑鏂瑰紡鍩轟簬涓涓湪鏃╁厛C++鏍囧噯涓病鏈夊嚭鐜扮殑璇█鐗規?-妯℃澘錛坱emplate錛夈傚鏋滄煡闃呬換浣曚竴涓増鏈殑STL婧愪唬鐮侊紝浣犲氨浼氬彂鐜幫紝妯℃澘浣滀負鏋勬垚鏁翠釜STL鐨勫熀鐭蟲槸涓浠跺崈鐪熶竾紜殑浜嬫儏銆傞櫎姝や箣澶栵紝榪樻湁璁稿C++鐨勬柊鐗規т負STL鐨勫疄鐜版彁渚涗簡鏂逛究銆?span class=Apple-converted-space> 銆銆涓嶇煡浣犲榪欓噷涓涓嬪瓙鍐掑嚭榪欎箞澶氭湳璇仛浣曟劅鎯籌紝甯屾湜涓嶄細鍙︿綘涓嶆剦蹇傚亣濡備綘瀵瑰畠浠箣涓殑澶у鏁頒笉鐢氫簡瑙o紝鏁鏀懼績錛屽湪鍚庣畫鍐呭涓皢浼氬榪欎簺鍚嶈瘝閫愪竴璁鴻堪銆傛濡傚紑澶存墍鎻愬埌鐨勩?span class=Apple-converted-space> 銆銆鏈夎叮鐨勬槸錛屽浜嶴TL榪樻湁鍙﹀涓縐嶈В閲?-STepanov & Lee錛屽墠鑰呮槸鎸嘇lexander Stepanov錛孲TL鐨勫垱濮嬩漢錛涜屽悗鑰呮槸Meng Lee錛屽ス涔熸槸浣縎TL寰椾互鎺ㄨ鐨勫姛鑷o紝絎竴涓猄TL鎴愬搧灝辨槸浠栦滑鍚堜綔瀹屾垚鐨勩傝繖涓鎻愭硶婧愯嚜1995騫?鏈堬紝Dr.Dobb's Journal鐗圭害璁拌? 钁楀悕鎶鏈功綾嶄綔瀹禔l Stevens瀵笰lexander Stepanov鐨勪竴綃囦笓璁褲?span class=Apple-converted-space> 銆銆1.2 榪芥牴婧簮錛歋TL鐨勫巻鍙插闄㈡暀鎺圖avid Musser鍏卞悓寮鍙戜簡涓縐嶅彨鍋歍ecton鐨勮璦銆傚敖綆¤繖嬈″皾璇曟渶緇堟病鏈夊彇寰楀疄鐢ㄦх殑鎴愭灉錛屼絾鍗寸粰浜哠tepanov寰堝ぇ鐨勫惎紺恒?span class=Apple-converted-space> 銆銆鍦ㄧ粨璇嗘柊鏈嬪弸鐨勬椂鍊欙紝澶у鏁頒漢鎬繪槸蹇嶄笉浣忔兂浜嗚В瀵規柟鐨勮繃鍘匯傛湰鑺傚皢甯︽偍綆鍗曞洖欏句竴涓婼TL鐨勮繃鍘匯?span class=Apple-converted-space> 銆銆琚獕涓篠TL涔嬬埗鐨凙lexander Stepanov錛屽嚭鐢熶簬鑻忚仈鑾柉縐戯紝鏃╁湪20涓栫邯70騫翠唬鍚庡崐鏈燂紝浠栦究宸茬粡寮濮嬭冭檻錛屽湪淇濊瘉鏁堢巼鐨勫墠鎻愪笅錛屽皢綆楁硶浠庤澶氬叿浣撳簲鐢ㄤ箣涓娊璞″嚭鏉ョ殑鍙兘鎬э紝榪欎究鏄悗鏉ユ硾鍨嬪寲鎬濇兂鐨勯洀褰€備負浜嗛獙璇佽嚜宸辯殑鎬濇兂錛屼粬鍜岀航綰﹀窞绔嬪ぇ瀛︽暀鎺圖eepak Kapur錛屼雞濉為噷灝旀妧鏈?span class=Apple-converted-space> 銆銆鍦ㄩ殢鍚庣殑鍑犲勾涓紝浠栧張鍜孌avid Musser絳変漢鍏堝悗鐢⊿chema璇█ 錛堜竴縐峀isp璇█鐨勫彉縐嶏級鍜孉da璇█寤虹珛浜嗕竴浜涘ぇ鍨嬬▼搴忓簱銆傝繖鍏墮棿錛孉lexander Stepanov寮濮嬫剰璇嗗埌錛屽湪褰撴椂鐨勯潰鍚戝璞$▼搴忚璁℃濇兂涓墍瀛樺湪鐨勪竴浜涢棶棰橈紝姣斿鎶借薄鏁版嵁綾誨瀷姒傚康鎵瀛樺湪鐨勭己闄楓係tepanov甯屾湜閫氳繃瀵硅蔣浠墮鍩熶腑鍚勭粍鎴愰儴鍒嗙殑鍒嗙被錛岄愭笎褰㈡垚涓縐嶈蔣浠惰璁$殑姒傚康鎬ф鏋躲?span class=Apple-converted-space> 銆銆1987騫村乏鍙籌紝鍦ㄨ礉灝斿疄楠屽宸ヤ綔鐨凙lexander Stepanov寮濮嬮嬈¢噰鐢–++璇█榪涜娉涘瀷杞歡搴撶殑鐮旂┒銆備絾閬楁喚鐨勬槸錛屽綋鏃剁殑C++璇█榪樻病鏈夊紩鍏ユā鏉匡紙template錛夌殑璇硶錛岀幇鍦ㄦ垜浠彲浠ユ竻妤氱殑鐪嬪埌錛屾ā鏉挎蹇典箣浜嶴TL瀹炵幇錛屾槸浣曠瓑閲嶈銆傛槸鏃朵嬌鐒訛紝閲囩敤緇ф壙鏈哄埗鏄埆鏃犻夋嫨鐨勩傚敖綆″姝わ紝Stepanov榪樻槸寮鍙戝嚭浜嗕竴涓簽澶х殑綆楁硶搴撱備笌姝ゅ悓鏃訛紝鍦ㄤ笌Andrew Koenig錛堝墠ISO C++鏍囧噯鍖栧鍛樹細涓誨腑錛夊拰Bjarne Stroustrup錛圕++璇█鐨勫垱濮嬩漢錛夌瓑欏剁駭澶у笀浠殑鍏變簨榪囩▼涓紝Stepanov寮濮嬫敞鎰忓埌C/C++璇█鍦ㄥ疄鐜板叾娉涘瀷鎬濇兂鏂歸潰鎵鍏鋒湁鐨勬綔鍦ㄤ紭鍔褲傚氨鎷緾/C++涓殑鎸囬拡鑰岃█錛屽畠鐨勭伒媧諱笌楂樻晥榪愮敤錛屼嬌鍚庢潵鐨凷TL鍦ㄥ疄鐜版硾鍨嬪寲鐨勫悓鏃舵洿鏄繚鎸佷簡楂樻晥鐜囥傚彟澶栵紝鍦⊿TL涓崰鎹瀬鍏墮噸瑕佸湴浣嶇殑榪唬瀛愭蹇典究鏄簮鑷簬C/C++涓師鐢熸寚閽堬紙 native pointer錛夌殑鎶借薄銆?br>銆銆1988騫達紝Alexander Stepanov寮濮嬭繘鍏?a class=article style="FONT-SIZE: 14px; COLOR: rgb(0,0,255); WORD-BREAK: break-all; LINE-HEIGHT: 19px; TEXT-DECORATION: none" target=_blank>鎯犳櫘鐨凱alo Alto瀹為獙瀹ゅ伐浣滐紝鍦ㄩ殢鍚庣殑4騫翠腑錛屼粬浠庝簨鐨勬槸鏈夊叧紓佺洏 椹卞姩鍣ㄦ柟闈㈢殑宸ヤ綔銆傜洿鍒?992騫達紝鐢變簬鍙傚姞騫朵富鎸佷簡瀹為獙瀹や富浠籅ill Worley鎵寤虹珛鐨勪竴涓湁鍏崇畻娉曠殑鐮旂┒欏圭洰錛屾墠浣夸粬閲嶆柊鍥炲埌浜嗘硾鍨嬪寲綆楁硶鐨勭爺絀跺伐浣滀笂鏉ャ傞」鐩嚜寤虹珛涔嬪悗錛屽弬涓庤呬粠鏈鍒濈殑8浜洪愭笎鍑忓皯錛屾渶鍚庡彧鍓╀笅涓や釜浜?-Stepanove鏈漢鍜孧eng Lee銆傜粡榪囬暱鏃墮棿鐨勫姫鍔涳紝鏈緇堬紝淇″康涓庢睏姘存墍鎹㈡潵鐨勬槸涓涓寘鍚湁澶ч噺鏁版嵁緇撴瀯鍜岀畻娉曢儴浠剁殑搴炲ぇ榪愯搴撱傝繖渚挎槸鐜板湪鐨凷TL鐨勯洀褰紙鍚屾椂涔熸槸STL鐨勪竴涓疄鐜扮増鏈?-HP STL錛夈?span class=Apple-converted-space> 銆銆1993騫達紝褰撴椂鍦ㄨ礉灝斿疄楠屽鐨凙ndrew Koenig鐪嬪埌浜哠tepanove鐨勭爺絀舵垚鏋滐紝寰堟槸鍏村銆傚湪浠栫殑榧撳姳涓庡府鍔╀笅錛孲tepanove浜庢槸騫?鏈堢殑鍦d綍濉炰負ANSI/ISO C++鏍囧噯濮斿憳浼氬仛浜嗕竴涓浉鍏蟲紨璁詫紙棰樹負"The Science of C++ Programming"錛夛紝鍚戝鍛樹滑璁茶堪浜嗗叾瑙傚康銆傜劧鍚庡張浜庢騫?鏈堬紝鍦ㄥ湥榪垐浼氳涓婏紝鍚戝鍛樹細鎻愪氦浜嗕竴浠藉緩璁功錛屼互鏈熶嬌STL鎴愪負C++鏍囧噯搴撶殑涓閮ㄥ垎銆傚敖綆¤繖涓寤鴻鍗佸垎搴炲ぇ錛屼互鑷充簬闄嶄綆浜嗚閫氳繃鐨勫彲鑳芥э紝浣嗙敱浜庡叾鎵鍖呭惈鐨勬柊鎬濇兂錛屾姇紲ㄧ粨鏋滀互鍘嬪掑鏁扮殑鎰忚璁や負鎺ㄨ繜瀵硅寤鴻鐨勫喅瀹氥?span class=Apple-converted-space> 銆銆闅忓悗錛屽湪浼椾漢鐨勫府鍔╀箣涓嬶紝鍖呮嫭Bjarne Stroustrup鍦ㄥ唴錛孲tepanove鍙堝STL榪涜浜嗘敼榪涖傚悓鏃跺姞鍏ヤ簡涓涓皝瑁呭唴瀛樻ā寮忎俊鎭殑鎶借薄妯″潡錛屼篃灝辨槸鐜板湪STL涓殑allocator錛屽畠浣縎TL鐨勫ぇ閮ㄥ垎瀹炵幇閮藉彲浠ョ嫭绔嬩簬鍏蜂綋鐨勫唴瀛樻ā寮忥紝浠庤岀嫭绔嬩簬鍏蜂綋騫沖彴銆傚湪鍚屽勾澶忓鐨勬粦閾佸崲浼氳涓婏紝濮斿憳浠互80%璧炴垚錛?0%鍙嶅錛屾渶緇堥氳繃浜嗘彁妗堬紝鍐沖畾灝哠TL姝e紡綰沖叆C++鏍囧噯鍖栬繘紼嬩箣涓紝闅忓悗STL渚胯鏀捐繘浜嗕細璁殑宸ヤ綔鏂囦歡涓傝嚜姝わ紝STL緇堜簬鎴愪負浜咰++瀹舵棌涓殑閲嶈涓鍛樸?span class=Apple-converted-space> 銆銆姝ゅ悗錛岄殢鐫C++鏍囧噯鐨勪笉鏂敼榪涳紝STL涔熷湪涓嶆柇鍦頒綔鐫鐩稿簲鐨勬紨鍖栥傜洿鑷?998騫達紝ANSI/ISO C++鏍囧噯姝e紡瀹氭錛孲TL濮嬬粓鏄疌++鏍囧噯涓笉鍙垨緙虹殑涓澶ч儴浠躲?span class=Apple-converted-space> 銆銆1.3 鍗冧笣涓囩紩鐨勮仈緋匯銆1.3.1 STL鍜孋++銆銆1.3.2 STL鍜孋++鏍囧噯鍑芥暟搴?.3.3 STL鍜孏P錛孏P鍜孫OP 銆銆1.4 STL鐨勪笉鍚屽疄鐜扮増鏈銆1.4.1 HP STL銆銆1.4.2 P.J. Plauger STLhttp://www.dinkumware.comVisualStudiohashset瀹瑰櫒銆?.4.3 Rouge Wave STLhttp://www.rougewave.com婧愪唬鐮丆:Program Files\Borland\Cbuilder6\Include\oldstl錛夈?.4.4 STLporthttp://www.stlport.org鍏嶈垂涓嬭澆VC涓殑STL瑕佸揩銆傛瘮Rouge Wave STL鏇寸鍚堟爣鍑嗭紝涔熸洿瀹規槗縐繪銆侭orland C++ Builder宸茬粡鍦ㄥ叾6.0鐗堜腑鍔犲叆浜嗗STLport鐨勬敮鎸侊紝瀹冧嬌鐢ㄧ殑STLport灝辨槸4.5鐗堢殑錛孋++ Builder 6.0鍚屾椂榪樻彁渚涗簡STLport鐨勪嬌鐢ㄨ鏄庛備綘鍙互鍦–++ Builder鐨処nclude\Stlport瀛愮洰褰曚笅鎵懼埌鎵鏈夊ご鏂囦歡錛堟瘮濡傦細C:\Program Files\Borland\Cbuilder6\Include\Stlport錛夈?.4.5 SGI STLhttp://www.sgi.com鏂扮増鏈槸3.3銆?span class=Apple-converted-space> 銆銆鍦ㄤ綘浜嗚В浜哠TL鐨勮繃鍘諱箣鍚庯紝涓浜涘悕璇嶅紑濮嬩笉鏂湪浣犵殑澶ц剳涓誕鐜幫紝STL銆丆++銆丆++鏍囧噯鍑芥暟搴撱佹硾鍨嬬▼搴忚璁°侀潰鍚戝璞$▼搴忚璁?#8230;…錛岃繖浜涙蹇墊剰鍛崇潃浠涔堬紵浠栦滑涔嬮棿鐨勫叧緋誨張鏄粈涔堬紵濡傛灉浣犳兂浜嗚В鏌愪簺緇嗚妭錛岃繖閲屼篃璁告湁浣犲笇鏈涘緱鍒扮殑絳旀銆?span class=Apple-converted-space> 銆銆娌℃湁C++璇█灝辨病鏈塖TL錛岃繖涔堣姣笉涓鴻繃銆備竴鑸岃█錛孲TL浣滀負涓涓硾鍨嬪寲鐨勬暟鎹粨鏋勫拰銆銆姝ゅ錛孲TL瀵逛簬C++鐨勫彂灞曪紝灝ゅ叾鏄ā鏉挎満鍒訛紝涔熻搗鍒頒簡淇冭繘浣滅敤銆傛瘮濡傦細妯℃澘鍑芥暟鐨勫亸鐗瑰寲錛坱emplate function partial specialization錛夛紝瀹冭鐢ㄤ簬鍦ㄧ壒瀹氬簲鐢ㄥ満鍚堬紝涓轟竴鑸ā鏉垮嚱鏁版彁渚涗竴緋誨垪鐗規畩鍖栫増鏈傝繖涓鐗規ф槸緇TL琚獳NSI/ISO C++鏍囧噯濮斿憳浼氶氳繃涔嬪悗錛屽湪Bjarne鍜孲tepanov鍏卞悓鍟嗚涔嬩笅騫剁敱Bjarne鍚戝鍛樹細鎻愬嚭寤鴻鐨勶紝鏈緇堣欏瑰緩璁閫氳繃銆傝繖浣垮緱STL涓殑涓浜涚畻娉曞湪澶勭悊鐗規畩鎯呭艦鏃跺彲浠ラ夋嫨闈炰竴鑸寲鐨勬柟寮忥紝浠庤屼繚璇佷簡鎵ц鐨勬晥鐜囥?span class=Apple-converted-space> 銆銆STL鏄渶鏂扮殑C++鏍囧噯鍑芥暟搴撲腑鐨勪竴涓瓙闆嗭紝榪欎釜搴炲ぇ鐨勫瓙闆嗗崰鎹簡鏁翠釜搴撶殑澶х害80%鐨勫垎閲忋傝屼綔涓哄湪瀹炵幇STL榪囩▼涓壆婕斿叧閿鑹茬殑妯℃澘鍒欏厖鏂ヤ簡鍑犱箮鏁翠釜C++鏍囧噯鍑芥暟搴撱傚湪榪欓噷錛屾垜浠湁蹇呰鐪嬩竴鐪婥++鏍囧噯鍑芥暟搴撻噷鍖呭惈浜嗗摢浜涘唴瀹癸紝鍏朵腑鍙堟湁鍝簺鏄睘浜庢爣鍑嗘ā鏉垮簱錛堝嵆STL錛夌殑銆?span class=Apple-converted-space> 銆銆C++鏍囧噯鍑芥暟搴撲負C++紼嬪簭鍛樹滑鎻愪緵浜嗕竴涓彲鎵╁睍鐨勫熀紜鎬ф鏋躲傛垜浠粠涓彲浠ヨ幏寰楁瀬澶х殑渚垮埄錛屽悓鏃朵篃鍙互閫氳繃緇ф壙鐜版湁綾伙紝鑷繁緙栧埗絎﹀悎鎺ュ彛瑙勮寖鐨勫鍣ㄣ佺畻娉曘佽凱浠e瓙絳夋柟寮忓涔嬭繘琛屾墿灞曘傚畠澶ц嚧鍖呭惈浜嗗涓嬪嚑涓粍浠訛細 銆銆C鏍囧噯鍑芥暟搴擄紝鍩烘湰淇濇寔浜嗕笌鍘熸湁C璇█紼嬪簭搴撶殑鑹ソ鍏煎錛屽敖綆℃湁浜涘井鍙樺寲銆備漢浠諱細蹇嶄笉浣忕暀鎭嬭繃鍘葷殑緹庡ソ宀佹湀錛屽鏋滀綘鏇劇粡鏄竴涓狢紼嬪簭鍛橈紝瀵硅繖涓鐐逛竴瀹氫綋浼氶娣便傛垨璁告湁涓鐐逛細璁╀綘瑙夊緱濂囨紝閭e氨鏄湪C++鏍囧噯搴撲腑瀛樺湪涓ゅC鐨勫嚱鏁板簱錛屼竴濂楁槸甯︽湁.h鎵╁睍鍚嶇殑錛堟瘮濡?stdio.h style="WORD-BREAK: break-all">錛夛紝鑰屽彟涓濂楀垯娌℃湁錛堟瘮濡?cstdio style="WORD-BREAK: break-all">錛夈傚畠浠‘瀹炴病鏈夊お澶х殑涓嶅悓銆?span class=Apple-converted-space> 銆銆璇█鏀寔錛坙anguage support錛夐儴鍒嗭紝鍖呭惈浜嗕竴浜涙爣鍑嗙被鍨嬬殑瀹氫箟浠ュ強鍏朵粬鐗規х殑瀹氫箟錛岃繖浜涘唴瀹癸紝琚敤浜庢爣鍑嗗簱鐨勫叾浠栧湴鏂規垨鏄叿浣撶殑搴旂敤紼嬪簭涓?span class=Apple-converted-space> 銆銆璇婃柇錛坉iagnostics錛夐儴鍒嗭紝鎻愪緵浜嗙敤浜庣▼搴忚瘖鏂拰鎶ラ敊鐨勫姛鑳斤紝鍖呭惈浜嗗紓甯稿鐞嗭紙exception handling錛夛紝鏂█錛坅ssertions錛夛紝閿欒浠g爜錛坋rror number codes錛変笁縐嶆柟寮忋?span class=Apple-converted-space> 銆銆閫氱敤宸ュ叿錛坓eneral utilities錛夐儴鍒嗭紝榪欓儴鍒嗗唴瀹逛負C++鏍囧噯搴撶殑鍏朵粬閮ㄥ垎鎻愪緵鏀寔錛屽綋鐒朵綘涔熷彲浠ュ湪鑷繁鐨勭▼搴忎腑璋冪敤鐩稿簲鍔熻兘銆傛瘮濡傦細鍔ㄦ佸唴瀛樼鐞嗗伐鍏鳳紝鏃ユ湡/鏃墮棿澶勭悊宸ュ叿銆傝浣忥紝榪欓噷鐨勫唴瀹逛篃宸茬粡琚硾鍖栦簡錛堝嵆閲囩敤浜嗘ā鏉挎満鍒訛級銆?span class=Apple-converted-space> 銆銆瀛楃涓詫紙string錛夐儴鍒嗭紝鐢ㄦ潵浠h〃鍜屽鐞嗘枃鏈傚畠鎻愪緵浜嗚凍澶熶赴瀵岀殑鍔熻兘銆備簨瀹炰笂錛屾枃鏈槸涓涓猻tring瀵硅薄錛屽畠鍙互琚湅浣滄槸涓涓瓧絎﹀簭鍒楋紝瀛楃綾誨瀷鍙兘鏄痗har錛屾垨鑰厀char_t絳夌瓑銆俿tring鍙互琚漿鎹㈡垚char*綾誨瀷錛岃繖鏍蜂究鍙互鍜屼互鍓嶆墍鍐欑殑C/C++浠g爜 鍜屽鉤鍏卞浜嗐傚洜涓洪偅鏃朵警闄や簡char*錛屾病鏈夊埆鐨勩?span class=Apple-converted-space> 銆銆鍥介檯鍖栵紙internationalization錛夐儴鍒嗭紝浣滀負OOP鐗規т箣涓鐨勫皝瑁呮満鍒跺湪榪欓噷鎵紨鐫娑堥櫎鏂囧寲鍜屽湴鍩熷樊寮傜殑瑙掕壊錛岄噰鐢╨ocale鍜宖acet鍙互涓虹▼搴忔彁渚涗紬澶氬浗闄呭寲鏀寔錛屽寘鎷鍚勭瀛楃闆嗙殑鏀寔錛屾棩鏈熷拰鏃墮棿鐨勮〃紺猴紝鏁板煎拰璐у竵鐨勫鐞嗙瓑絳夈傛瘯绔燂紝鍦ㄤ腑鍥藉拰鍦ㄧ編鍥斤紝浜轟滑琛ㄧず鏃ユ湡鐨勪範鎯槸涓嶅悓鐨勩?span class=Apple-converted-space> 銆銆瀹瑰櫒錛坈ontainers錛夐儴鍒嗭紝STL鐨勪竴涓噸瑕佺粍鎴愰儴鍒嗭紝娑電洊浜嗚澶氭暟鎹粨鏋勶紝姣斿鍓嶉潰鏇劇粡鎻愬埌鐨勯摼琛紝榪樻湁錛歷ector錛堢被浼間簬澶у皬鍙姩鎬佸鍔犵殑鏁扮粍錛夈乹ueue錛堥槦鍒楋級銆乻tack錛堝爢鏍堬級……銆俿tring涔熷彲浠ョ湅浣滄槸涓涓鍣紝閫傜敤浜庡鍣ㄧ殑鏂規硶鍚屾牱涔熼傜敤浜巗tring銆傜幇鍦ㄤ綘鍙互杞繪澗鐨勫畬鎴愭暟鎹粨鏋勮紼嬬殑瀹跺涵浣滀笟浜嗐?br>銆銆綆楁硶錛坅lgorithms錛夐儴鍒嗭紝STL鐨勪竴涓噸瑕佺粍鎴愰儴鍒嗭紝鍖呭惈浜嗗ぇ綰?0涓氱敤綆楁硶錛岀敤浜庢搷鎺у悇縐嶅鍣紝鍚屾椂涔熷彲浠ユ搷鎺у唴寤烘暟緇勩傛瘮濡傦細find鐢ㄤ簬鍦ㄥ鍣ㄤ腑鏌ユ壘絳変簬鏌愪釜鐗瑰畾鍊肩殑鍏冪礌錛宖or_each鐢ㄤ簬灝嗘煇涓嚱鏁板簲鐢ㄥ埌瀹瑰櫒涓殑鍚勪釜鍏冪礌涓婏紝sort鐢ㄤ簬瀵瑰鍣ㄤ腑鐨勫厓绱犳帓搴忋傛墍鏈夎繖浜涙搷浣滈兘鏄湪淇濊瘉鎵ц鏁堢巼鐨勫墠鎻愪笅榪涜鐨勶紝鎵浠ワ紝濡傛灉鍦ㄤ綘浣跨敤浜嗚繖浜涚畻娉曚箣鍚庣▼搴忓彉寰楁晥鐜囧簳涓嬶紝棣栧厛涓瀹氫笉瑕佹鐤戣繖浜涚畻娉曟湰韜紝浠旂粏媯鏌ヤ竴涓嬬▼搴忕殑鍏朵粬鍦版柟銆?span class=Apple-converted-space> 銆銆榪唬鍣紙iterators錛夐儴鍒嗭紝STL鐨勪竴涓噸瑕佺粍鎴愰儴鍒嗭紝濡傛灉娌℃湁榪唬鍣ㄧ殑鎾悎錛屽鍣ㄥ拰綆楁硶渚挎棤娉曠粨鍚堢殑濡傛瀹岀編銆備簨瀹炰笂錛屾瘡涓鍣ㄩ兘鏈夎嚜宸辯殑榪唬鍣紝鍙湁瀹瑰櫒鑷繁鎵嶇煡閬撳浣曡闂嚜宸辯殑鍏冪礌銆傚畠鏈夌偣鍍忔寚閽堬紝綆楁硶閫氳繃榪唬鍣ㄦ潵瀹氫綅鍜屾搷鎺у鍣ㄤ腑鐨勫厓绱犮?span class=Apple-converted-space> 銆銆鏁板鹼紙numerics錛夐儴鍒嗭紝鍖呭惈浜嗕竴浜涙暟瀛﹁繍綆楀姛鑳斤紝鎻愪緵浜嗗鏁拌繍綆楃殑鏀寔銆?span class=Apple-converted-space> 銆銆杈撳叆/杈撳嚭錛坕nput/output錛夐儴鍒嗭紝灝辨槸緇忚繃妯℃澘鍖栦簡鐨勫師鏈夋爣鍑嗗簱涓殑iostream閮ㄥ垎錛屽畠鎻愪緵浜嗗C++紼嬪簭杈撳叆杈撳嚭鐨勫熀鏈敮鎸併傚湪鍔熻兘涓婁繚鎸佷簡涓庡師鏈塱ostream鐨勫吋瀹癸紝騫朵笖澧炲姞浜嗗紓甯稿鐞嗙殑鏈哄埗錛屽茍鏀寔鍥介檯鍖栵紙internationalization錛夈?span class=Apple-converted-space> 銆銆鎬諱綋涓婏紝鍦?a style="FONT-SIZE: 12px; COLOR: rgb(78,78,78); WORD-BREAK: break-all; TEXT-DECORATION: none" >C++鏍囧噯鍑芥暟搴撲腑錛孲TL涓昏鍖呭惈浜嗗鍣ㄣ佺畻娉曘佽凱浠e櫒銆俿tring涔熷彲浠ョ畻鍋氭槸STL鐨勪竴閮ㄥ垎銆?span class=Apple-converted-space> 銆銆姝e鍓嶉潰鎵鎻愬埌鐨勶紝鍦⊿TL鐨勮儗鍚庤暣鍚潃娉涘瀷鍖栫▼搴忚璁★紙GP錛夌殑鎬濇兂錛屽湪榪欑鎬濇兂閲岋紝澶ч儴鍒嗗熀鏈畻娉曡鎶借薄錛岃娉涘寲錛岀嫭绔嬩簬涓庝箣瀵瑰簲鐨勬暟鎹粨鏋勶紝鐢ㄤ簬浠ョ浉鍚屾垨鐩歌繎鐨勬柟寮忓鐞嗗悇縐嶄笉鍚屾儏褰€傝繖涓鎬濇兂鍜岄潰鍚戝璞$殑紼嬪簭璁捐鎬濇兂錛圤OP錛変笉灝界浉鍚岋紝鍥犱負錛屽湪OOP涓洿娉ㄩ噸鐨勬槸瀵規暟鎹殑鎶借薄錛屽嵆鎵璋撴娊璞℃暟鎹被鍨嬶紙Abstract Data Type錛夛紝鑰岀畻娉曞垯閫氬父琚檮灞炰簬鏁版嵁綾誨瀷涔嬩腑銆傚嚑涔庢墍鏈夌殑浜嬫儏閮藉彲浠ヨ鐪嬩綔綾繪垨鑰呭璞★紙鍗崇被鐨勫疄渚嬶級錛岄氬父錛屾垜浠墍鐪嬪埌鐨勭畻娉曡浣滀負鎴愬憳鍑芥暟錛坢ember function錛夊寘鍚湪綾伙紙class錛変腑錛岀被鍜岀被鍒欐瀯鎴愪簡閿欑患澶嶆潅鐨勭戶鎵夸綋緋匯?span class=Apple-converted-space> 銆銆灝界鍦ㄨ薄C++榪欐牱鐨勭▼搴忚璁¤璦涓紝浣犺繕鍙互鐢ㄥ叏灞鍑芥暟鏉ヨ〃紺虹畻娉曪紝浣嗘槸鍦ㄧ被浼間簬Java榪欐牱鐨勭函闈㈠悜瀵硅薄鐨勮璦涓紝鍏ㄥ眬鍑芥暟宸茬粡琚?鍕掍護紱佹"浜嗐傚洜姝わ紝鐢↗ava鏉ユā鎷烥P鎬濇兂鏄涓哄洶闅劇殑銆傚鏋滀綘瀵瑰墠榪扮殑STL鍘嗗彶榪樻湁鍗拌薄鐨勮瘽錛屽簲璇ヨ寰桝lexander Stepanove涔熸浘鐢ㄥ熀浜嶰OP鐨勮璦灝濊瘯榪囧疄鐜癎P鎬濇兂錛屼絾鏄晥鏋滃茍涓嶅ソ錛屽寘鎷病鏈夊紩鍏ユā鏉夸箣鍓嶇殑C++璇█銆傜珯鍦ㄥ法浜虹殑鑲╄唨涓婏紝鎴戜滑鍙互寰楀嚭榪欐牱鐨勭粨璁猴紝鍦∣OP涓墍浣撶幇鐨勬濇兂涓嶨P鐨勬濇兂紜疄鏄浉寮傜殑銆侰++騫朵笉鏄竴縐嶇函闈㈠悜瀵硅薄鐨勭▼搴忚璁¤璦錛屽畠鐨勭粷濡欎箣澶勶紝灝卞湪浜庢棦婊¤凍浜哋OP錛屽張鎴愬叏浜咷P銆傚浜庡悗鑰咃紝妯℃澘绔嬩笅浜嗘睏椹姛鍔熾傚彟澶栵紝闇瑕佹寚鍑虹殑鏄紝灝界GP鍜孫OP鏈夎澶氫笉鍚岋紝浣嗚繖縐嶄笉鍚岃繕涓嶈嚦浜庡埌"姘寸伀涓嶅"鐨勫湴姝ャ傚茍涓旓紝鍦ㄥ疄闄呰繍鐢ㄧ殑鏃跺欙紝涓よ呯殑緇撳悎浣跨敤寰寰鍙互浣塊棶棰樼殑瑙e喅鏇翠負鏈夋晥銆備綔涓篏P鎬濇兂瀹炰緥鐨凷TL鏈韓渚挎槸涓涓緢濂界殑鑼冧緥錛屽鏋滄病鏈夌戶鎵匡紝涓嶇煡閬揝TL浼氭槸浠涔堟牱瀛愶紝浼間箮娌℃湁浜哄仛榪囪繖鏍風殑璇曢獙銆?br>銆銆鐩鎬俊浣犲STL鐨勬劅鎬ц璇嗗簲璇ユ湁鎵鎻愰珮浜嗭紝鏄鍋氫竴浜涘疄闄呯殑宸ヤ綔浜嗭紝閭d箞鎴戜滑棣栧厛鏉ヤ簡瑙d竴涓婼TL鐨勪笉鍚屽疄鐜扮増鏈侫NSI/ISO C++鏂囦歡涓殑STL鏄竴涓粎琚弿榪板湪綰鎬笂鐨勬爣鍑嗭紝瀵逛簬璇稿C++緙栬瘧鍣ㄨ岃█錛岄渶瑕佹湁鍚勮嚜瀹為檯鐨凷TL錛屽畠浠垨澶氭垨灝戠殑瀹炵幇浜嗘爣鍑嗕腑鎵鎻忚堪鐨勫唴瀹癸紝榪欐牱鎵嶈兘澶熶負鎴戜滑鎵鐢ㄣ備箣鎵浠ユ湁涓嶅悓鐨勫疄鐜扮増鏈紝鍒欏瓨鍦ㄨ澶氬師鍥狅紝鏈夊巻鍙茬殑鍘熷洜錛屼篃鏈夊悇鑷紪璇戝櫒鐢熶駭鍘傚晢鐨勫師鍥犮備互涓嬫槸鍑犱釜甯歌鐨凷TL瀹炵幇鐗堟湰銆?span class=Apple-converted-space> 銆銆HP STL鏄墍鏈夊叾瀹僑TL瀹炵幇鐗堟湰鐨勬牴婧愩傚畠鏄疭TL涔嬬埗Alexander Stepanov鍦?a class=article style="FONT-SIZE: 14px; COLOR: rgb(0,0,255); WORD-BREAK: break-all; LINE-HEIGHT: 19px; TEXT-DECORATION: none" target=_blank>鎯犳櫘鐨凱alo Alto瀹為獙瀹ゅ伐浣滄椂錛屽拰Meng Lee鍏卞悓瀹屾垚鐨勶紝鏄涓涓猄TL鐨勫疄鐜扮増鏈紙鍙傝1.2鑺傦級銆傝繖涓猄TL鏄紑鏀炬簮鐮佺殑錛屾墍浠ュ畠鍏佽浠諱綍浜哄厤璐逛嬌鐢ㄣ佸鍒躲佷慨鏀廣佸彂甯冨拰閿鍞杞歡 鍜岀浉鍏蟲枃妗o紝鍓嶆彁鏄繀欏誨湪鎵鏈夌浉鍏蟲枃浠朵腑鍔犲叆HP STL鐨勭増鏈俊鎭拰鎺堟潈淇℃伅銆傜幇鍦ㄥ凡緇忓緢灝戠洿鎺ヤ嬌鐢ㄨ繖涓増鏈殑STL浜嗐?span class=Apple-converted-space> 銆銆P. J. Plauger STL灞炰簬涓漢浣滃搧錛岀敱P. J. Plauger鏈漢瀹炵幇錛屾槸HP STL鐨勪竴涓戶鎵跨増鏈紝鍥犳鍦ㄥ叾鎵鏈夊ご鏂囦歡涓兘鍚湁HP STL鐨勭浉鍏沖0鏄庯紝鍚屾椂榪樻湁P. J. Plauger鏈漢鐨勭増鏉冨0鏄庛侾. J. Plauger鏄爣鍑咰涓璼tdio搴撶殑鏃╂湡瀹炵幇鑰咃紝鐜板湪鏄疌/C++ User's Journal鐨勪富緙栵紝涓嶮icrosoft淇濇寔鐫鑹ソ鐨勫叧緋匯侾. J. Plauger STL渚挎槸琚敤浜嶮icrosoft鐨刅isual C++涓殑銆傚湪Windows騫沖彴涓嬬殑鍚岀被鐗堟湰涓紝鍏舵ц兘涓嶉敊錛屼絾鏄痲ueue緇勪歡錛堥槦鍒楋紝涓縐嶅鍣級鐨勬晥鐜囦笉鐞嗘兂錛屽悓鏃剁敱浜嶸isual C++瀵笴++璇█鏍囧噯鐨勬敮鎸佷笉鏄緢濂斤紙鑷沖皯鐩村埌VC6.0涓烘錛岃繕鏄姝わ級錛屽洜姝や竴瀹氱▼搴︿笂褰卞搷浜哖. J. Plauger STL鐨勬ц兘銆傛澶栵紝璇ョ増鏈殑婧愪唬鐮佸彲璇繪ц緝宸紝浣犲彲浠ュ湪VC鐨処nclude瀛愮洰褰曚笅鎵懼埌鎵鏈夋簮鏂囦歡錛堟瘮濡傦細C:\Program Files\Microsoft Visual Studio\VC98\Include錛夈傚洜涓轟笉鏄紑鏀炬簮鐮佺殑錛坥pen source錛夛紝鎵浠ヨ繖浜?a style="FONT-SIZE: 12px; COLOR: rgb(78,78,78); WORD-BREAK: break-all; TEXT-DECORATION: none" >婧愪唬鐮?/a>鏄笉鑳戒慨鏀瑰拰閿鍞殑錛岀洰鍓峆.J. Plauger STL鐢盌inkumware鍏徃鎻愪緵鐩稿叧鏈嶅姟. 銆銆Rouge Wave STL鏄敱Rouge Wave鍏徃瀹炵幇鐨勶紝涔熸槸HP STL鐨勪竴涓戶鎵跨増鏈紝闄や簡HP STL鐨勭浉鍏沖0鏄庝箣澶栵紝榪樻湁Rouge Wave鍏徃鐨勭増鏉冨0鏄庛傚悓鏃訛紝瀹冧篃涓嶆槸寮鏀炬簮鐮佺殑錛屽洜姝ゆ棤娉曚慨鏀瑰拰閿鍞傝鐗堟湰琚獴orland C++ Builder鎵閲囩敤錛屼綘鍙互鍦–++ Builder鐨処nclude瀛愮洰褰曚笅鎵懼埌鎵鏈夊ご鏂囦歡錛堟瘮濡傦細C:\Program Files\Borland\Cbuilder5\Include錛夈傚敖綆ouge Wave STL鐨勬ц兘涓嶆槸寰堝ソ錛屼絾鐢變簬C++ Builder瀵笴++璇█鏍囧噯鐨勬敮鎸佽繕綆椾笉閿欙紝浣垮叾琛ㄧ幇鍦ㄤ竴瀹氱▼搴︿笂寰椾互鏀瑰杽銆傛澶栵紝鍏舵簮浠g爜鐨勫彲璇繪ц緝濂姐傚彲浠ヤ粠濡備笅緗戠珯寰楀埌鏇磋緇嗙殑鎯呭喌浠嬬粛錛?span class=Apple-converted-space> 銆銆STLport鏈鍒濇簮浜庝縿鍥戒漢Boris Fomitchev鐨勪竴涓紑鍙戦」鐩紝涓昏鐢ㄤ簬灝哠GI STL鐨勫熀鏈唬鐮佺Щ妞嶅埌鍏朵粬璇稿C++Builder鎴栬呮槸Visual C++榪欐牱鐨勪富嫻佺紪璇戝櫒涓娿傚洜涓篠GI STL灞炰簬寮鏀炬簮鐮侊紝鎵浠TLport鎵嶆湁鏉冭繖鏍峰仛銆傜洰鍓峉TLport鐨勬渶鏂扮増鏈槸4.5銆傚彲浠ヤ粠濡備笅緗戠珯寰楀埌鏇磋緇嗙殑鎯呭喌浠嬬粛錛?span class=Apple-converted-space> 銆銆SGI STL鏄敱Silicon Graphics Computer System, Inc鍏徃瀹炵幇鐨勶紝鍏惰璁¤呭拰緙栧啓鑰呭寘鎷珹lexander Stepanov鍜孧att Austern錛屽悓鏍峰畠涔熸槸HP STL鐨勪竴涓戶鎵跨増鏈傚畠灞炰簬寮鏀炬簮鐮侊紝鍥犳浣犲彲浠ヤ慨鏀瑰拰閿鍞畠銆係GI STL琚獹CC錛坙inux涓嬬殑C++緙栬瘧鍣級鎵閲囩敤錛屼綘鍙互鍦℅CC鐨処nclude瀛愮洰褰曚笅鎵懼埌鎵鏈夊ご鏂囦歡錛堟瘮濡傦細C:\cygnus\cygwin-b20\include\g++\include錛夈傜敱浜嶨CC瀵笴++璇█鏍囧噯鐨勬敮鎸佸緢濂斤紝SGI STL鍦╨inux騫沖彴涓婄殑鎬ц兘鐩稿綋鍑鴻壊銆傛澶栵紝鍏舵簮浠g爜鐨勫彲璇繪т篃寰堝ソ銆?/span>
]]>C++綾誨簱錛歄TL閫氱敤鐨勬暟鎹簱榪炴帴綾誨簱 http://m.shnenglu.com/lovefeel2004/archive/2010/06/02/116946.html騫芥ⅵ鏂板獎 騫芥ⅵ鏂板獎 Tue, 01 Jun 2010 16:05:00 GMT http://m.shnenglu.com/lovefeel2004/archive/2010/06/02/116946.html http://m.shnenglu.com/lovefeel2004/comments/116946.html http://m.shnenglu.com/lovefeel2004/archive/2010/06/02/116946.html#Feedback 0 http://m.shnenglu.com/lovefeel2004/comments/commentRss/116946.html http://m.shnenglu.com/lovefeel2004/services/trackbacks/116946.html
OTL鏄竴涓函C++鐨勯氱敤鏁版嵁搴撹繛鎺ユā鏉垮簱錛屽彲浠ユ敮鎸佸悇縐嶅綋涓嬫祦琛岀殑鏁版嵁搴擄紝濡侽racle錛孲ybase, MySQL, PostgreSQL, EnterpriseDB, SQLite, MS ACCESS, Firebird絳夌瓑.瀹冩槸涓涓法騫沖彴綾誨簱錛屽湪MS Windows, Linux/Unix/Mac OS X 閮藉彲浠ヤ嬌鐢ㄣ?/p>
涓嬭澆緗戝潃錛?font style="WORD-BREAK: normal; LINE-HEIGHT: 19px; WORD-WRAP: normal" size=2>http://otl.sourceforge.net/
OTL浣跨敤綆鍗? 鍙澶存枃浠朵腑鍖呭惈鏈? #include "otlv4.h " 灝卞彲錛屽疄闄呬笂鏁翠釜OTL灝變竴涓?H鐨勬枃浠訛紝浣跨敤璧鋒潵鏋佷負鐨勬柟渚褲?/span>
OTL浣跨敤鏂規硶錛?/p>
1銆侀鍏堟寚瀹氳榪炴帴鐨勬暟鎹簱綾誨瀷錛孫TL鐢?font style="WORD-BREAK: normal; LINE-HEIGHT: 19px; WORD-WRAP: normal" size=2>瀹忓畾涔?/font>鏉ユ寚瀹氳榪炴帴鐨勬暟鎹簱綾誨瀷銆?font style="WORD-BREAK: normal; LINE-HEIGHT: 19px; WORD-WRAP: normal" size=2>OTL 浼氭牴鎹繖涓畯瀹氫箟鏉ュ垵濮嬪寲鏁版嵁搴撹繛鎺ョ殑鐜銆?/span>
鐩稿叧鐨勫畯瀹氫箟鍒楄〃 http://otl.sourceforge.net/otl3_compile.htm
濡傦細 #define OTL_ORA8I 琛ㄧず榪炴帴Oracle 8i 鏁版嵁搴撱?/p>
2銆佷緥瀛?/span>
#include <iostream> using namespace std; #include <stdio.h>
#define OTL_ORA8I // 鎸囧畾榪炴帴鐨勬暟鎹簱綾誨瀷 #include <otlv4.h> // include the OTL 4 header file
otl_connect db; // 瀹氫箟鏁版嵁搴撳疄渚?/span>
void insert() // 娣誨姞璁板綍
{ otl_stream o(50, // buffer size "insert into test_tab values(:f1<float>,:f2<char[31]>)", // SQL statement db // connect object ); char tmp[32];
for(int i=1;i<=100;++i){ #if defined(_MSC_VER) #if (_MSC_VER >= 1400) // VC++ 8.0 or higher sprintf_s(tmp,sizeof(tmp),"Name%d",i); #else sprintf(tmp,"Name%d",i); #endif #else sprintf(tmp,"Name%d",i); #endif o<<static_cast<float>(i)<<tmp; } }
//鏌ヨ璁板綍
void select() { otl_stream i(50, // buffer size "begin " " open :cur1 for " " select * from test_tab " " where f1>=:f<int> and f1<=:f*2; " "end;", // SELECT statement via referenced cursor db, // connect object ":cur1" // referenced cursor placeholder name ); // create select stream otl_column_desc* desc; int desc_len;
i<<4; // Before the child SELECT statement can be described, // the PL/SQL master block needs to be executed. // Forcing the execution of the blcok by entering its input // patameter.
desc=i.describe_select(desc_len);
for(int n=0;n<desc_len;++n){ cout<<"========== COLUMN #"<<n+1<<" ==========="<<endl; cout<<"name="<<desc[n].name<<endl; cout<<"dbtype="<<desc[n].dbtype<<endl; cout<<"otl_var_dbtype="<<desc[n].otl_var_dbtype<<endl; cout<<"dbsize="<<desc[n].dbsize<<endl; cout<<"scale="<<desc[n].scale<<endl; cout<<"prec="<<desc[n].prec<<endl; cout<<"nullok="<<desc[n].nullok<<endl; }
}
int main() { otl_connect::otl_initialize(); // 鍒濆鍖朞racle鐜 try{
db.rlogon("scott/tiger"); // 榪炴帴Oracle
otl_cursor::direct_exec ( db, "drop table test_tab", otl_exception::disabled // disable OTL exceptions ); // drop table
otl_cursor::direct_exec ( db, "create table test_tab(f1 number, f2 varchar2(30))" ); // create table
insert(); select();
}
catch(otl_exception& p){ // intercept OTL exceptions cerr<<p.msg<<endl; // print out error message cerr<<p.stm_text<<endl; // print out SQL that caused the error cerr<<p.var_info<<endl; // print out the variable that caused the error }
db.logoff(); //鏂紑鏁版嵁搴撹繛鎺?/span>
return 0;
}
]]>boost搴搇inux緙栬瘧瀹夎 http://m.shnenglu.com/lovefeel2004/archive/2010/06/01/116943.html騫芥ⅵ鏂板獎 騫芥ⅵ鏂板獎 Tue, 01 Jun 2010 15:36:00 GMT http://m.shnenglu.com/lovefeel2004/archive/2010/06/01/116943.html http://m.shnenglu.com/lovefeel2004/comments/116943.html http://m.shnenglu.com/lovefeel2004/archive/2010/06/01/116943.html#Feedback 0 http://m.shnenglu.com/lovefeel2004/comments/commentRss/116943.html http://m.shnenglu.com/lovefeel2004/services/trackbacks/116943.html 鐩稿浜嶹indows鏉ワ紝Linux涓嬬殑boost緙栬瘧綆鍗曡嚦鏋併傛病鏈夐偅涔堝鐨勫彲閫夌紪璇戝櫒錛屾病鏈夐偅闀跨殑緙栬瘧鏃墮棿錛屾病鏈夐偅涔堝鐨勭‖鐩樹嬌鐢ㄩ噺錛岀粺涓鐨刬nlude鍜宭ib鐩綍錛屼綘鐔熸倝鍛戒護琛岋紝涓嶄嬌鐢↖DE錛屼笉闇瑕佹垜閭d箞緗楀棪鐨勪粙緇嶆庝箞閰嶇疆EditPlus銆?br> 棣栧厛鏄笅杞絙oost錛屽彲浠ュ湪姝?
http://sourceforge.net/projects/boost
瀵繪壘涓涓悎閫傜殑鐗堟湰銆傛瘮濡傛垜涓嬭澆鐨勬槸boost_1_33_1.tar.gz錛岃В鍘嬪埌/opt銆?br>
tar xzvf boost_1_33_1.tar.gz -C/opt
鎻愰啋錛氬仛榪欎簺浜嬫儏鐨勬椂鍊欎綘闇瑕佹湁root鏉冮檺銆?br> 榪涘叆boost鐩綍錛?br>
cd /opt/boost_1_33_1
棣栧厛鎴戜滑瑕佺紪璇慴jam錛?br>
cd tools/build/jam_src/ ./build.sh
寰堝揩緙栬瘧緇撴潫錛岄粯璁ゆ儏鍐典笅錛宐jam浼氳澶嶅埗鍒?usr/local/bin/bjam銆?br> 鐜板湪浣犲彲浠ヤ嬌鐢╞jam緙栬瘧boost浜嗐?br>
cd ../../.. bjam -sTOOLS=gcc install
緙栬瘧鏃墮棿涓嶄細濡倃indows閭d箞闀夸箙錛屽湪鎴戠殑鐢佃剳涓婄紪璇戜簡澶х害40鍒嗛挓銆備綘鍙互鍦ㄥ墠鍚庝嬌鐢╠f鍛戒護媯鏌ヤ笅紓佺洏浣跨敤錛屽湪鎴戠殑鐢佃剳涓婏紝緙栬瘧boost鑺辮垂浜?00M鐨勭┖闂淬?br> 浣跨敤install浼氭妸澶存枃浠跺鍒跺埌/usr/local/include/boost-1_33_1涓紝鎶婄敓鎴愮殑lib澶嶅埗鍒?usr/local/lib涓傝繖浜涘畬鎴愪箣鍚庯紝璁板緱瑕佷嬌鐢╨dconfig鏉ユ洿鏂板姩鎬侀摼鎺ュ簱銆?br> 鍦ㄦ祴璇曚袱涓緥瀛愪箣鍓嶏紝鎴戜滑鍏堣緗嚑涓幆澧冨彉閲忋?br>
BOOST_ROOT=/opt/boost_1_33_1 BOOST_INCLUDE=/usr/local/include/boost-1_33_1 BOOST_LIB=/usr/local/lib
涓轟簡浣垮叾鑳藉鍦ㄧ櫥褰曟椂鑷姩瀵煎叆錛屼綘鍙互鍐欎竴涓剼鏈細
#!/bin/sh #boost settings BOOST_ROOT=/opt/boost_1_33_1 BOOST_INCLUDE=/usr/local/include/boost-1_33_1 BOOST_LIB=/usr/local/lib export BOOST_ROOT BOOST_INCLUDE BOOST_LIB
灝嗗叾淇濆瓨涓?etc/profile.d/boost.sh錛屽茍浣跨敤chmod a+x boost.sh璁劇疆鎵ц鏉冮檺銆?br> 鐜板湪鎴戜滑鍙互鍐欎袱孌典唬鐮佹潵嫻嬭瘯浜嗐?br> 絎竴涓祴璇曟枃浠舵槸lex.cpp錛?br>
#include <boost/lexical_cast.hpp> #include <iostream> int main() { using boost::lexical_cast; int a = lexical_cast<int>("123"); double b = lexical_cast<double>("123.12"); std::cout<<a<<std::endl; std::cout<<b<<std::endl; return 0; }
緙栬瘧錛?br>
g++ lex.cpp -I$BOOST_ROOT -o lex
榪愯錛?br>
./lex
杈撳嚭錛?br>
123 123.12
浣犲彲浠ュ皢$BOOST_ROOT鏀逛負$BOOST_INCLUDE錛屽鏋滀綘娌℃湁璁劇疆鐜鍙橀噺錛屽彲浠ユ敼涓?opt/boost_1_33_1鎴栬?usr/local/include/boost-1_33_1銆?br> 鎴戜滑鐨勭浜屼釜渚嬪瓙鏄痳e.cpp錛?br>
#include <iostream> #include <string> #include <boost/regex.hpp> int main() { std::string s = "who,lives:in-a,pineapple under the sea?"; boost::regex re(",|:|-|\\s+"); boost::sregex_token_iterator p(s.begin( ), s.end( ), re, -1); boost::sregex_token_iterator end; while (p != end) std::cout << *p++ << '\n'; }
緙栬瘧錛?br>
g++ re.cpp -I$BOOST_ROOT -lboost_regex-gcc -o re
榪愯錛?br>
./re
杈撳嚭錛?br>
who lives in a pineapple under the sea?
榪欓噷瑕佷嬌鐢?l鎸囧畾浜嗛摼鎺ュ簱銆?br> 鐜板湪boost鐨勫熀鏈畨瑁呴厤緗凡緇忓畬鎴愶紝浣嗘槸鎴戜滑鍙互鍐嶆敼榪涗笅銆?br> 濡傛灉涓嶆兂姣忔閮芥寚瀹歜oost澶存枃浠剁洰褰曪紝鍙互灝嗗叾link鍒?usr/include涓細
ln -s /opt/boost_1_33_1/boost /usr/include/boost
鎴栬咃細
ln -s /usr/local/include/boost-1_33_1/boost /usr/include/boost
濡傛灉浣犱緷鐒跺珜boost緙栬瘧鍚庡崰鐢ㄧ殑絀洪棿澶ぇ錛屽彲浠ュ湪boost鐩綍涓嬩嬌鐢╞jam clean錛?br>
cd /opt/boost_1_33_1 bjam -sTOOLS=gcc clean
榪欎釜鍛戒護浼氭竻闄ょ紪璇戞椂鐨勪腑闂存枃浠訛紝/usr/local/lib涓嬪甫鐗堟湰鍙風殑boost libs錛屽拰/usr/local/include涓嬬殑boost澶存枃浠躲備絾鏄悓鏃惰妭鐪佷簡鍑犵櫨M鐨勭‖鐩樼┖闂淬?br> 鎵浠ュ鏋滀綘浣跨敤浜哻lean錛岃寰楀皢BOOST_INCLUDE鏇翠負BOOST_ROOT錛?opt/boost_1_33_1錛夛紝灝?/usr/include/boost link鍒?opt/boost_1_33_1/boost錛屽啀鏈夊氨鏄紪璇戦摼鎺ユ椂鐨刡oost lib涓嶈甯︾増鏈彿銆?br> 濡傛灉浣犺寰楃紪璇戞椂鎵嬪姩閾炬帴鏁查偅涔堥暱鐨勫悕瀛楁瘮杈冮夯鐑︼紝鍙互浣跨敤鑴氭湰鏉ヨ嚜鍔ㄥ鎵鵑摼鎺ワ細
#!/usr/bin/python import os import sys import re BOOST_ROOT = os.getenv('BOOST_ROOT') BOOST_LIB = os.getenv('BOOST_LIB') #BOOST_ROOT = '/opt/boost_1_33_1' #BOOST_LIB = '/usr/local/lib' def getlibs(): alls = os.listdir(BOOST_LIB) libpattern = re.compile(r'^libboost_([^-]+)-gcc') libs = {} for lib in alls: m = libpattern.match(lib) if m: libs[m.group(1).lower()] = 1 return libs pattern = re.compile(r'^\s*#include\s*<\s*boost/(.+)\.(h|hpp)\s*>') libs = getlibs() libskeys = libs.keys() includes = {} ENV = os.environ ARGV = sys.argv[1:] files = ARGV if len(files) == 0: sys.exit() for f in files: if f.lower().endswith('.cpp'): fp = open(f, 'r') lines = fp.readlines() for ln in lines: m = pattern.match(ln) if m: libname = m.group(1).lower() if libname in libskeys: includes[libname] = 1 libline = ' '.join(map(lambda lib: '-lboost_'+lib+'-gcc', includes.keys())) obj = ARGV[0] obj = obj[:len(obj)-4] #cmd = 'g++ %s -I%s %s -o %s' % (' '.join(files), BOOST_ROOT, libline, obj) cmd = 'g++ %s %s -o %s' % (' '.join(files), libline, obj) print cmd os.system(cmd)
灝嗚繖孌典唬鐮佸啓榪?usr/local/bin/gccboost錛岃祴浜堟墽琛屾潈闄愩?br> 浣跨敤鏂規硶錛?br>
gccboost lex.cpp gccboost re.cpp
娉ㄦ剰錛氫嬌鐢ㄦ鍛戒護鍋囪boost澶存枃浠跺湪/usr/include涓紝濡傛灉鍋囪涓嶆垚绔嬶紝璇瘋嚜琛屼慨鏀硅剼鏈琛岋細
cmd = 'g++ %s %s -o %s' % (' '.join(files), libline, obj)
涓轟箣鍓嶇殑娉ㄩ噴琛岋細
cmd = 'g++ %s -I%s %s -o %s' % (' '.join(files), BOOST_ROOT, libline, obj)
濡傝嫢BOOST_ROOT鍜孊OOST_LIB鐜鍙橀噺涓嶅瓨鍦紝淇敼涓嬮潰涓よ浠g爜錛?br>
BOOST_ROOT = os.getenv('BOOST_ROOT') BOOST_LIB = os.getenv('BOOST_LIB')
涓轟箣鍚庢敞閲婅錛?br>
BOOST_ROOT = '/opt/boost_1_33_1' BOOST_LIB = '/usr/local/lib'
鍙﹀錛実ccboost灝嗕細鑷姩淇敼杈撳嚭鐨勬枃浠跺悕涓?.cpp鐨勬枃浠跺悕錛堝lex.cpp灝嗚緭鍑簂ex錛夛紝濡傛灉涓嶉渶瑕侊紝璇峰皢涓嬮潰鐨勪唬鐮侊細
cmd = 'g++ %s %s -o %s' % (' '.join(files), libline, obj)
鏀逛負錛?br>
cmd = 'g++ %s %s' % (' '.join(files), libline)
Boost瀹夎鍘嗙▼鑷蟲鍩烘湰緇撴潫銆?/span>
]]>鍦↙inux緋葷粺涓畨瑁呭拰閰嶇疆ACE(杞? http://m.shnenglu.com/lovefeel2004/archive/2010/06/01/116942.html騫芥ⅵ鏂板獎 騫芥ⅵ鏂板獎 Tue, 01 Jun 2010 15:31:00 GMT http://m.shnenglu.com/lovefeel2004/archive/2010/06/01/116942.html http://m.shnenglu.com/lovefeel2004/comments/116942.html http://m.shnenglu.com/lovefeel2004/archive/2010/06/01/116942.html#Feedback 0 http://m.shnenglu.com/lovefeel2004/comments/commentRss/116942.html http://m.shnenglu.com/lovefeel2004/services/trackbacks/116942.html
鏈枃璇︾粏鎻忚堪浜嗗湪Linux鎿嶄綔緋葷粺涓婂畨瑁呭拰閰嶇疆“鑷傚簲閫氫俊鐜(ACE)”鐨勮繃紼嬪拰娉ㄦ剰浜嬮」銆?br>鏂囦腑鐨勬弿榪板熀浜嶳edHat Linux 9鎿嶄綔緋葷粺鍜孉CE 5.4鐗?/p>
鍑嗗宸ヤ綔錛?
1.紜繚浣犵殑Linux鎿嶄綔緋葷粺鐨勫紑鍙戠幆澧?gcc銆乵ake……)鏄畬鏁翠笖鍙敤鐨勩?br>2.鍦ㄥ畨瑁匒CE鐨勮繃紼嬩腑錛屽彲鑳介渶瑕乺oot鏉冮檺錛屽洜姝ょ‘淇濅綘鎷ユ湁root甯愭埛鐨勫瘑鐮併?br>3.瀵逛簬鍏稿瀷鐨凴edhat9緋葷粺錛宎utoconf紼嬪簭鐨勭増鏈彲鑳借繃浣庯紝浣犻渶瑕侀鍏堝崌綰у畠銆?
鍗囩駭鐨勬楠ゅ涓嬶細
1.鍦ㄦ帶鍒跺彴涓緭鍏?autoconf -V錛屾煡鐪嬩綘鐨刟utoconf紼嬪簭鐨勭増鏈?br>2.濡傛灉浣庝簬2.57g錛屼綘闇瑕佸埌http://www.gnu.org/software/autoconf/ 鍘諱笅杞芥渶鏂扮増鏈殑autoconf紼嬪簭錛岀洰鍓峚utoconf紼嬪簭鐨勭増鏈槸2.59 3.鏍規嵁tarball涓殑瀹夎璇存槑錛岀紪璇戝茍瀹夎鍗囩駭autoconf紼嬪簭 寮濮嬪畨瑁咃細
緇忚繃涓婇潰鐨勫噯澶囧伐浣滐紝鐜板湪浣犲凡緇忓叿澶囦簡瀹夎ACE鐨勬潯浠躲備笅闈㈠紑濮嬫寮忕殑瀹夎宸ヤ綔銆?
1.棣栧厛紜畾ACE鐨勫畨瑁呰礬寰勶紝騫跺緩绔嬬浉搴旂殑鐩綍銆?br>榪欓噷錛屾垜浠妸ACE瀹夎鍦?home/zhc/ace/鐨勭洰褰曚笅錛屽厛鎵ц mkdir /home/zhc/ace 2.鐒跺悗灝嗚幏寰楃殑ACE婧愪唬鐮佸寘瑙h嚦璇ョ洰褰曚笅銆?br>tar zxvf ACE-5.4.tar.gz /home/zhc/ace 3.榪欐椂錛屽湪ace鐨勭洰褰曚笅浼氬緩绔嬩竴涓悕涓篈CE_wrappers鐨勫瓙鐩綍錛孉CE鎵鏈夌殑婧愪唬鐮併佸伐鍏楓佸拰渚嬪瓙閮藉湪榪欎釜鐩綍涓?br>鍏堣繘鍏ヨ鐩綍錛屾墽琛?br>cd /home/zhc/ace/ACE_wrappers 鐒跺悗寤虹珛涓涓瓙鐩綍錛岀敤浜庡瓨鏀続CE緙栬瘧鍚庣殑鐩爣鏂囦歡 mkdir build cd build 4.鎺ョ潃,鎵цconfigure鑴氭湰錛屾鏌ヤ綘鐨勭郴緇熺幆澧冿紝閰嶇疆騫剁敓鎴愰傚悎浣犵殑緋葷粺鐨凪akefile鏂囦歡銆?br>鍦ㄦ墽琛宑onfigure鑴氭湰鏃訛紝鍙互鍔犲叆璁稿閰嶇疆閫夐」錛屽叾璇︾粏璇存槑鍙互鍙傜湅ACE_wrappers鐩綍涓嬬殑ACE-INSTALL.html鏂囦歡錛?br>瀵逛簬Redhat9緋葷粺鏉ヨ錛屼笉蹇呭姞浠諱綍鍙傛暟錛孉CE灝卞彲浠ュ緢濂界殑宸ヤ綔浜嗐?br>../configure 5.鍦ㄦ極闀跨殑媯鏌ュ拰閰嶇疆涔嬪悗錛屽鏋滄病鏈変粈涔堥棶棰橈紝浣犲氨鍙互寮濮嬬紪璇戜簡錛堝鏋滆璁゛ce鏀寔ICMP 鍜屽c++搴撶殑鏀寔錛岄渶瑕佸湪config.h澶存枃浠朵腑鍔犱笂#define ACE_HAS_STANDARD_CPP_LIBRARY 1 鍜?define ACE_HAS_ICMP_SUPPORT 1錛夈?br>榪欎竴姝ュ緢綆鍗曪紝鎵ц make 鐒跺悗錛屾場涓鏉尪錛岄潤闈欑殑絳夊緟灝辮浜嗐?br>6.濡傛灉緙栬瘧欏哄埄鐨勯氳繃(閫氬父閮戒細鏄繖鏍風殑)錛岄偅涔堟伃鍠滀綘錛屼綘宸茬粡鎴愬姛浜嗕竴澶у崐浜嗭紝涓嬮潰瑕佸仛鐨勪粎浠呮槸浠ヤ簺閰嶇疆宸ヤ綔鑰屽凡銆?br>鎺ヤ笅鏉ョ殑宸ヤ綔鏄畨瑁咃紝榪欎竴姝ユ槸鍙夌殑錛岀洰鐨勬槸鎶婄紪璇戠敓鎴愮殑ACE鐨勫簱鏂囦歡銆佸ご鏂囦歡鍜屾墜鍐岄〉絳夊畨瑁呭埌/usr/local鐨勭浉搴旂洰褰曚腑鍘伙紝涓轟簡浠婂悗浣跨敤鐨勬柟渚匡紝鎴戝緩璁綘榪樻槸榪涜榪欎竴姝ワ紝鎵ц su root's password make install 7.瀹夎涔嬪悗錛屾垜浠氨鍙互榪涜鏈鍚庣殑閰嶇疆宸ヤ綔浜嗐?br>棣栧厛璁劇疆鐜鍙橀噺ACE_ROOT錛屾墽琛?br>setenv ACE_ROOT /home/zhc/ace/ACE_wrappers 娉ㄦ剰鍏朵腑鐨勮礬寰勮鏍規嵁浣犵殑瀹為檯鎯呭喌鑰屽畾 濡傛灉浣犱笉鎯蟲瘡嬈¢兘鎵嬪伐璁懼畾璺緞錛屽彲浠ョ紪杈戜綘鐨刡ash鐨勯厤緗枃浠訛紝鎵ц cd vi .bash_profile 鍦ㄥ叾涓~鍔犲涓嬩袱琛?br>ACE_ROOT=/home/work/research/ace/ACE_wrappers export ACE_ROOT 8.鐒跺悗錛屽湪$ACE_ROOT/ace鐩綍涓垱寤轟竴涓悕涓篶onfig.h鐨勬枃浠訛紝鍦ㄥ叾涓寘鍚涓嬩竴琛?br>#include "ace/config-linux.h" 鎴栬咃紝綆鍗曡搗瑙侊紝浣犱篃鍙互鐩存帴寤虹珛涓涓寚鍚慶onfig-linux.h鐨勭鍙烽摼鎺ワ紝鎵ц ln -s config-linux.h config.h 9.鍚屾牱錛屽湪$ACE_ROOT/include/makeinclude鐩綍涓垱寤轟竴涓悕涓簆latform_macros.GNU鐨勬枃浠訛紝鍦ㄥ叾涓寘鍚涓嬩竴琛?br>include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU 鎴栬咃紝綆鍗曡搗瑙侊紝浣犱篃鍙互鐩存帴寤虹珛涓涓寚鍚憄latform_linux.GNU鐨勭鍙烽摼鎺ワ紝鎵ц ln -s platform_linux.GNU platform_macros.GNU 10.鏈鍚庝竴姝ワ紝璁劇疆鐜鍙橀噺LD_LIBRARY_PATH錛屾墽琛?br>setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$ACE_ROOT/lib: /usr/local/lib:$LD_LIBRARY_PATH 鎴栬呭湪~/.bash_profile鏂囦歡涓坊鍔犲涓嬩袱琛?br>LD_LIBRARY_PATH=$ACE_ROOT/ace:$ACE_ROOT/lib: /usr/local/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH 瀹夎瀹屾垚錛?
緇忚繃涓婇潰鐨勬楠わ紝ACE宸茬粡瀹夎鍒頒簡鎮ㄧ殑緋葷粺涓婁簡錛屼笅闈㈡垜浠皢緙栬瘧騫舵墽琛孉CE鐨勪緥紼嬩互楠岃瘉鎴戜滑鐨勫伐浣溿?br>榪欓噷鎴戜滑浠ャ奀++緗戠粶緙栫▼錛屽嵎涓銆嬫墍甯︾殑渚嬪瓙涓轟緥銆?
1:榪涘叆渚嬬▼鐩綍錛屾墽琛?br>cd $(ACE_ROOT)/examples/C++NPv1 2:緙栬瘧渚嬪瓙紼嬪簭錛屾墽琛?br>make 濡傛灉鍓嶉潰鐨勫畨瑁呭拰閰嶇疆姝g‘錛屽緢蹇氨鑳藉寰楀埌緙栬瘧鍚庣殑渚嬪瓙紼嬪簭銆?br>3:鍒嗗埆鎵ц涓涓湇鍔″櫒紼嬪簭(闅忎究鍝竴涓兘琛?鍜屼竴涓鎴風紼嬪簭(Logging_Client)錛屽鏋滅▼搴忚繍琛屾紜紝璇存槑鍓嶉潰鐨勫畨瑁呭拰閰嶇疆鎴愬姛錛屼笅闈綘灝卞彲浠ュ紑濮嬩綘鐨凙CE瀛︿範涔嬫梾浜?/span>
]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
亚洲视频免费在线 |
亚洲电影免费在线观看 |
亚洲欧美精品一区 |
欧美大片一区二区 |
欧美xxx在线观看 |
麻豆精品一区二区综合av
|
亚洲毛片在线看 |
亚洲精品一级 |
欧美高清影院 |
欧美体内she精视频 |
国产乱码精品一区二区三区av |
国产精品免费在线 |
黑人巨大精品欧美黑白配亚洲
|
亚洲一二区在线 |
欧美在线观看www |
另类成人小视频在线 |
免费黄网站欧美 |
国产精品国产精品 |
在线日本欧美 |
一区二区欧美日韩视频 |
亚洲欧美日韩天堂 |
麻豆成人在线 |
一本色道久久综合亚洲精品不
|
欧美日韩亚洲一区 |
国产一区二区成人久久免费影院 |
极品少妇一区二区三区精品视频 |
亚洲人成网站色ww在线 |
午夜精品成人在线 |
亚洲第一网站 |
亚洲少妇自拍 |
麻豆精品视频在线 |
国产精品美女 |
亚洲精品在线免费 |
久久久精品国产免费观看同学
|
亚洲综合社区 |
最新亚洲电影 |
欧美在线影院在线视频 |
亚洲欧洲精品成人久久奇米网 |
亚洲欧美日韩精品一区二区 |
欧美黄色一区二区 |
国产在线视频不卡二 |
亚洲午夜精品在线 |
99国产精品久久久久久久成人热 |
亚洲网站视频 |
久久中文久久字幕 |
国产精品免费福利 |
欧美精品成人91久久久久久久 |
欧美三级视频在线播放 |
一区二区三区在线免费播放 |
亚洲特色特黄 |
亚洲第一精品在线 |
久久久天天操 |
国产一区二区三区免费观看 |
亚洲一区二区毛片 |
一级成人国产 |
欧美日韩成人综合 |
亚洲精选大片 |
亚洲国产成人精品视频 |
久久精品亚洲精品 |
狠狠狠色丁香婷婷综合久久五月 |
久久国产精彩视频 |
亚洲欧美日韩在线观看a三区 |
欧美日韩日本国产亚洲在线 |
亚洲精选视频在线 |
亚洲精品专区 |
国产精品jizz在线观看美国
|
欧美第一黄色网 |
亚洲人成欧美中文字幕 |
亚洲国产天堂网精品网站 |
久久综合综合久久综合 |
在线观看亚洲精品 |
欧美国产日韩xxxxx |
免费亚洲一区二区 |
亚洲精品一区二区三区四区高清 |
欧美gay视频激情 |
能在线观看的日韩av |
亚洲精品婷婷 |
亚洲精品影视在线观看 |
欧美日韩一区二 |
午夜精品一区二区三区在线
|
欧美激情一区二区三区在线 |
日韩一区二区福利 |
99视频精品在线 |
国产日韩欧美精品 |
免费看的黄色欧美网站 |
欧美成人精品不卡视频在线观看 |
亚洲精品乱码 |
亚洲天堂av在线免费观看 |
国产欧美成人 |
欧美国产三区 |
欧美四级剧情无删版影片 |
久久国产精品久久久久久久久久
|
久久国产精品99精品国产 |
久久久久久9999 |
亚洲图片欧洲图片av |
久久国产66 |
一区二区高清在线观看 |
欧美亚洲三级 |
一区二区精品在线 |
久久久久国产精品一区 |
中文在线资源观看视频网站免费不卡 |
亚洲欧美在线免费观看 |
亚洲精品久久久久久久久久久久久
|
国产主播一区二区 |
欧美成人高清视频 |
国产精品久久777777毛茸茸 |
久久亚洲精品一区 |
欧美色123 |
亚洲第一二三四五区 |
国产欧美精品日韩精品 |
亚洲麻豆一区 |
亚洲国产精品一区制服丝袜 |
亚洲天堂免费在线观看视频 |
亚洲国产精品一区 |
性欧美大战久久久久久久免费观看
|
欧美午夜欧美 |
欧美激情在线播放 |
国产视频精品网 |
亚洲区欧美区 |
亚洲国产精品成人久久综合一区 |
亚洲欧美综合国产精品一区 |
av成人毛片 |
欧美激情按摩在线 |
欧美电影电视剧在线观看 |
国产午夜亚洲精品不卡 |
中文一区在线 |
亚洲欧美成aⅴ人在线观看 |
欧美欧美全黄 |
亚洲三级视频 |
亚洲伦理在线观看 |
美女露胸一区二区三区 |
欧美mv日韩mv国产网站app |
国产日韩欧美综合一区 |
亚洲一区久久久 |
亚洲永久在线 |
国产精品伦理 |
午夜精品久久久久久久蜜桃app
|
久久都是精品 |
国产欧美激情 |
亚洲淫性视频 |
欧美一区国产一区 |
国产日韩在线亚洲字幕中文 |
亚洲欧美制服中文字幕 |
欧美一区影院 |
国产亚洲一级 |
欧美亚洲视频在线观看 |
久久精视频免费在线久久完整在线看 |
国产农村妇女精品 |
香蕉成人久久 |
久久久亚洲午夜电影 |
亚洲高清资源 |
欧美日韩国产系列 |
亚洲欧美日韩综合国产aⅴ |
久久国产精品久久国产精品 |
国产亚洲免费的视频看 |
久久久免费观看视频 |
欧美黄色日本 |
亚洲线精品一区二区三区八戒 |
亚洲天堂免费在线观看视频 |
国产精品分类 |
99视频+国产日韩欧美 |
欧美亚洲尤物久久 |
精品69视频一区二区三区 |
媚黑女一区二区 |
亚洲精品久久久久久久久久久久久 |
一区二区三区波多野结衣在线观看 |
国产精品国产a |
久久国产精品亚洲va麻豆 |
亚洲国产精品999 |
亚洲欧美日韩在线播放 |
激情久久五月天 |
欧美日韩国产综合视频在线 |
亚洲在线不卡 |
亚洲国产精品高清久久久 |
正在播放亚洲 |
国模精品一区二区三区色天香 |
欧美成人福利视频 |
亚洲一区免费视频 |
亚洲国产精品久久久久婷婷老年
|
最新国产精品拍自在线播放 |
午夜精品剧场 |
亚洲日本中文字幕免费在线不卡 |
欧美午夜剧场 |
免费亚洲电影 |
欧美一区亚洲二区 |
亚洲美女毛片 |
欧美成人午夜 |
久久精品国产久精国产一老狼 |
亚洲精品中文字幕有码专区 |
国产视频观看一区 |
国产精品久久久久av |
男女激情久久 |
久久久999精品 |
亚洲欧美国产制服动漫 |
亚洲精品一二三区 |
欧美国产日产韩国视频 |
久久久亚洲人 |
欧美一区二区在线 |
午夜免费电影一区在线观看 |
av成人免费观看 |