锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲一本综合久久,久久亚洲精品中文字幕,久久久艹http://www.shnenglu.com/zhaoyg/archive/2012/03/11/167677.htmlzhaoygzhaoygSun, 11 Mar 2012 14:31:00 GMThttp://www.shnenglu.com/zhaoyg/archive/2012/03/11/167677.htmlhttp://www.shnenglu.com/zhaoyg/comments/167677.htmlhttp://www.shnenglu.com/zhaoyg/archive/2012/03/11/167677.html#Feedback2http://www.shnenglu.com/zhaoyg/comments/commentRss/167677.htmlhttp://www.shnenglu.com/zhaoyg/services/trackbacks/167677.html闂叉潵鏃犱簨錛屾ā浠跨潃鐏嫄鐨勬墜鍔胯瘑鍒彃浠跺啓浜?jiǎn)涓獦q蜂綘鐗堛?/span>
璇磋搗鏉ュぇ綰︿竴騫村墠鍦ㄧ綉涓婅榪囧埆浜哄啓榪欑帺鎰忥紝褰撴椂娌℃庝箞鐪嬪叾鍐呭錛屽彧鏄劅瑙夋湁闅懼害鐨勩傜劧鑰岀洿鍒拌繎鏈熻嚜宸卞垎鏋愯繖涓滆タ鍚庡彂鐜板叾瀹炴病浠涔堝唴瀹癸紝浜庢槸鑷繁灝辨悶浜?jiǎn)涓?/span>

鏁堟灉鎴浘錛?/span>


鐩墠鍙槸瀹炵幇浜?jiǎn)鍩杭媭閮ㄥ垎錛屾湁絀轟簡(jiǎn)鍦ㄥ線涓婇檮鍔犲唴瀹廣?/span>
鑷充簬浠g爜錛屽叾瀹炶繖涓滆タ鍩烘湰娌′粈涔堝惈閲忥紝鎵浠ヤ篃灝辨病蹇呰闄勪簡(jiǎn)銆?/span>


zhaoyg 2012-03-11 22:31 鍙戣〃璇勮
]]>
銆愯漿銆慍++11涓煎緱鍏蟲(chóng)敞鐨勫嚑澶у彉鍖?/title><link>http://www.shnenglu.com/zhaoyg/archive/2011/08/19/153882.html</link><dc:creator>zhaoyg</dc:creator><author>zhaoyg</author><pubDate>Fri, 19 Aug 2011 13:06:00 GMT</pubDate><guid>http://www.shnenglu.com/zhaoyg/archive/2011/08/19/153882.html</guid><wfw:comment>http://www.shnenglu.com/zhaoyg/comments/153882.html</wfw:comment><comments>http://www.shnenglu.com/zhaoyg/archive/2011/08/19/153882.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/zhaoyg/comments/commentRss/153882.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/zhaoyg/services/trackbacks/153882.html</trackback:ping><description><![CDATA[<div><div><div> <p>璧栧媷嫻╋紙http://laiyonghao.com錛?br /> 澹版槑錛氭湰鏂囨簮鑷?Danny Kalev 鍦?2011 騫?6 鏈?21 鏃ュ彂琛ㄧ殑銆奣he Biggest Changes in C++11(and Why You Should Care)銆嬩竴鏂囷紝鍑犱箮鎵鏈夊唴瀹歸兘鎼簡(jiǎn)榪囨潵錛屼絾涓嶆槸鍏ㄦ枃鐓ц瘧錛屾湁鍥版儜涔嬪錛岃鍙傝鍘熸枃錛?a >http://www.softwarequalityconnection.com/2011/06/the-biggest-changes-in-c11-and-why-you-should-care/</a> 錛夈?br /> 娉細(xì)浣滆?Danny Kalev 鏇炬槸 C++ 鏍囧噯濮斿憳?shù)細(xì)鎴愬憳銆?/p> <h2>Lambda 琛ㄨ揪寮?/h2> <p>Lambda 琛ㄨ揪寮忕殑褰㈠紡鏄繖鏍風(fēng)殑錛?br /> </p><div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>[capture](parameters)->return-type {body}  </span></li></ol></div> <br /> 鏉ョ湅涓鏁版煇涓瓧絎﹀簭鍒椾腑鏈夊嚑涓ぇ鍐欏瓧姣嶇殑渚嬪瓙錛?br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>int main()  </span></li><li>{  </li><li>   <span>char s[]="Hello World!";  </span></li><li>   <span>int Uppercase = 0; //modified by the lambda  </span></li><li>   for_each(s, s+<span>sizeof(s), [&Uppercase] (char c) {  </span></li><li>    <span>if (isupper(c))  </span></li><li>     Uppercase++;  </li><li>    });  </li><li> cout<< Uppercase<<<span>" uppercase letters in: "<< s<<endl;  </span></li><li>}  </li></ol></div> <br /> 鍏朵腑 [&Uppercase] 涓殑 & 鐨勬剰涔夋槸 lambda 鍑芥暟浣撹鑾峰彇涓涓?Uppercase 寮曠敤錛屼互渚胯兘澶熸敼鍙樺畠鐨勫鹼紝濡傛灉娌℃湁 &錛岄偅灝?Uppercase 灝嗕互浼犲肩殑褰㈠紡浼犻掕繃鍘匯?<h2>鑷姩綾誨瀷鎺ㄥ鍜?decltype</h2> <p>鍦?C++03 涓紝澹版槑瀵硅薄鐨勫悓鏃跺繀欏繪寚鏄庡叾綾誨瀷錛屽叾瀹炲ぇ澶氭暟鎯呭喌涓嬶紝澹版槑瀵硅薄鐨勫悓鏃朵篃浼?xì)鍖呮嫭涓涓垵濮嬪鹼紝C++11 鍦ㄨ繖縐嶆儏鍐典笅灝辮兘澶熻浣犲0鏄庡璞℃椂涓嶅啀鎸囧畾綾誨瀷浜?jiǎn)锛?xì)<br /> </p><div bg_c-sharp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>auto x=0; //0 鏄?nbsp;int 綾誨瀷錛屾墍浠?nbsp;x 涔熸槸 int 綾誨瀷  </span></li><li>auto c=<span>'a'; //char  </span></li><li>auto d=0.5; <span>//double  </span></li><li>auto national_debt=14400000000000LL;<span>//long long  </span></li></ol></div> <br /> 榪欎釜鐗規(guī)у湪瀵硅薄鐨勭被鍨嬪緢澶у緢闀跨殑鏃跺欏緢鏈夌敤錛屽錛?br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>void func(const vector<int> &vi)  </span></li><li>{  </li><li>  vector<<span>int>::const_iterator ci=vi.begin();  </span></li><li>}  </li></ol></div> <br /> 閭d釜榪唬鍣ㄥ彲浠ュ0鏄庝負(fù)錛?br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>auto ci=vi.begin();  </span></li></ol></div> <br /> C++11 涔熸彁渚涗簡(jiǎn)浠庡璞℃垨琛ㄨ揪寮忎腑“淇樿幏”綾誨瀷鐨勬満鍒訛紝鏂扮殑鎿嶄綔絎?decltype 鍙互浠庝竴涓〃杈懼紡涓?#8220;淇樿幏”鍏剁粨鏋滅殑綾誨瀷騫?#8220;榪斿洖”錛?br /> <div bg_c-sharp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>const vector<int> vi;  </span></li><li>typedef decltype (vi.begin()) CIT;  </li><li>CIT another_const_iterator;  </li></ol></div> <h2>緇熶竴鐨勫垵濮嬪寲璇硶</h2> <p>C++ 鏈灝戞湁 4 縐嶄笉鍚岀殑鍒濆鍖栧艦寮忥紝濡傛嫭鍙峰唴鍒濆鍖栵紝瑙侊細(xì)<br /> </p><div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>std::string s("hello");  </span></li><li><span>int m=int(); //default initialization  </span></li></ol></div> <br /> 榪樻湁絳夊彿褰㈠紡鐨勶細(xì)<br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>std::string s="hello";  </span></li><li><span>int x=5;  </span></li></ol></div> <br /> 瀵逛簬 POD 闆嗗悎錛屽張鍙互鐢ㄥぇ鎷彿錛?br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>int arr[4]={0,1,2,3};  </span></li><li><span>struct tm today={0};  </span></li></ol></div> <br /> 鏈鍚庤繕鏈夋瀯閫犲嚱鏁扮殑鎴愬憳鍒濆鍖栵細(xì)<br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>struct S {  </span></li><li> <span>int x;  </span></li><li> S(): x(0) {} };  </li></ol></div> <br /> 榪欎箞澶氬垵濮嬪寲褰㈠紡錛屼笉浠呰彍楦熶細(xì)鎼炲緱寰堝ご澶э紝楂樻墜涔熷悆涓嶆秷銆傛洿鎯ㄧ殑鏄?C++03 涓眳鐒朵笉鑳藉垵濮嬪寲 POD 鏁扮粍鐨勭被鎴愬憳錛屼篃涓嶈兘鍦ㄤ嬌鐢?new[] 鐨勬椂鍊欏垵濮?POD 鏁扮粍錛屾搷铔嬪晩錛丆++11 灝辯敤澶ф嫭鍙蜂竴緇熷ぉ涓嬩簡(jiǎn)錛?br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>class C  </span></li><li>{  </li><li><span>int a;  </span></li><li><span>int b;  </span></li><li><span>public:  </span></li><li> C(<span>int i, int j);  </span></li><li>};  </li><li>C c {0,0}; <span>//C++11 only. 鐩稿綋浜?nbsp;C c(0,0);  </span></li><li><span>int* a = new int[3] { 1, 2, 0 }; /C++11 only  </span></li><li><span>class X {  </span></li><li>  <span>int a[4];  </span></li><li><span>public:  </span></li><li>  X() : a{1,2,3,4} {} <span>//C++11, 鍒濆鍖栨暟緇勬垚鍛?nbsp; </span></li><li>};  </li></ol></div> <br /> 榪樻湁涓澶уソ浜嬪氨鏄浜庡鍣ㄦ潵璇達(dá)紝緇堜簬鍙互鎽嗚劚 push_back() 璋冪敤浜?jiǎn)锛孋++11涓彲浠ョ洿瑙傚湴鍒濆鍖栧鍣ㄤ簡(jiǎn)錛?br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>// C++11 container initializer  </span></li><li>vector vs<string>={ <span>"first", "second", "third"};  </span></li><li>map singers =  </li><li>  { {<span>"Lady Gaga", "+1 (212) 555-7890"},  </span></li><li>    {<span>"Beyonce Knowles", "+1 (212) 555-0987"}};  </span></li></ol></div> <br /> 鑰岀被涓殑鏁版嵁鎴愬憳鍒濆鍖栦篃寰楀埌浜?jiǎn)鏀寔锛?xì)<br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>class C  </span></li><li>{  </li><li> <span>int a=7; //C++11 only  </span></li><li><span>public:  </span></li><li> C();  </li><li>};  </li></ol></div> <h2>deleted 鍑芥暟鍜?defaulted 鍑芥暟</h2> <p>鍍忎互涓嬪艦寮忕殑鍑芥暟錛?br /> </p><div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>struct A  </span></li><li>{  </li><li> A()=<span>default; //C++11  </span></li><li> <span>virtual ~A()=default; //C++11  </span></li><li>};  </li></ol></div> <br /> 鍙仛 defaulted 鍑芥暟錛?default; 鎸囩ず緙栬瘧鍣ㄧ敓鎴愯鍑芥暟鐨勯粯璁ゅ疄鐜般傝繖鏈変袱涓ソ澶勶細(xì)涓鏄紼嬪簭鍛樿交鏉句簡(jiǎn)錛屽皯鏁查敭鐩橈紝浜屾槸鏈夋洿濂界殑鎬ц兘銆?br /> 涓?defaulted 鍑芥暟鐩稿鐨勫氨鏄?deleted 鍑芥暟錛?br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>int func()=delete;  </span></li></ol></div> <br /> 榪欒揣鏈変竴澶х敤閫斿氨鏄疄鐜?noncopyabe 闃叉瀵硅薄鎷瘋礉錛岃鎯崇姝㈡嫹璐濓紝鐢?=deleted 澹版槑涓涓嬩袱涓叧閿殑鎴愬憳鍑芥暟灝卞彲浠ヤ簡(jiǎn)錛?br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>struct NoCopy  </span></li><li>{  </li><li>    NoCopy & operator =( <span>const NoCopy & ) = delete;  </span></li><li>    NoCopy ( <span>const NoCopy & ) = delete;  </span></li><li>};  </li><li>NoCopy a;  </li><li>NoCopy b(a); <span>//緙栬瘧閿欒錛屾嫹璐濇瀯閫犲嚱鏁版槸 deleted 鍑芥暟  </span></li></ol></div> <h2>nullptr</h2> <p>nullptr 鏄竴涓柊鐨?C++ 鍏抽敭瀛楋紝瀹冩槸絀烘寚閽堝父閲忥紝瀹冩槸鐢ㄦ潵鏇夸唬楂橀闄╃殑 NULL 瀹忓拰 0 瀛楅潰閲忕殑銆俷ullptr 鏄己綾誨瀷鐨勶細(xì)<br /> </p><div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>void f(int); //#1  </span></li><li><span>void f(char *);//#2  </span></li><li><span>//C++03  </span></li><li>f(0); <span>//璋冪敤鐨勬槸鍝釜 f?  </span></li><li><span>//C++11  </span></li><li>f(nullptr) <span>//姣棤鐤戦棶錛岃皟鐢ㄧ殑鏄?nbsp;#2  </span></li></ol></div> <br /> 鎵鏈夎窡鎸囬拡鏈夊叧鐨勫湴鏂歸兘鍙互鐢?nullptr錛屽寘鎷嚱鏁版寚閽堝拰鎴愬憳鎸囬拡錛?br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>const char *pc=str.c_str(); //data pointers  </span></li><li><span>if (pc!=nullptr)  </span></li><li>  cout<<pc<<endl;  </li><li><span>int (A::*pmf)()=nullptr; //鎸囧悜鎴愬憳鍑芥暟鐨勬寚閽?nbsp; </span></li><li><span>void (*pmf)()=nullptr; //鎸囧悜鍑芥暟鐨勬寚閽?nbsp; </span></li></ol></div> <h2>濮旀墭鏋勯犲嚱鏁?/h2> <p>C++11 涓瀯閫犲嚱鏁板彲浠ヨ皟鐢ㄥ悓涓涓被鐨勫彟涓涓瀯閫犲嚱鏁幫細(xì)<br /> </p><div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>class M //C++11 delegating constructors  </span></li><li>{  </li><li> <span>int x, y;  </span></li><li> <span>char *p;  </span></li><li><span>public:  </span></li><li> M(<span>int v) : x(v), y(0),  p(new char [MAX])  {} //#1 target  </span></li><li> M(): M(0) {cout<<<span>"delegating ctor"<<end;} //#2 delegating  </span></li></ol></div> <br /> #2 灝辨槸鎵璋撶殑濮旀墭鏋勯犲嚱鏁幫紝璋冪敤浜?jiǎn)鐪熸鐨勬瀯閫犲嚱鏁?#1銆?<h2>鍙沖煎紩鐢?/h2> <p>鍦?C++03 涓殑寮曠敤綾誨瀷鏄彧緇戝畾宸﹀肩殑錛孋++11 寮曠敤涓涓柊鐨勫紩鐢ㄧ被鍨嬪彨鍙沖煎紩鐢ㄧ被鍨嬶紝瀹冩槸緇戝畾鍒板彸鍊肩殑錛屽涓存椂瀵硅薄鎴栧瓧闈㈤噺銆?br /> 澧炲姞鍙沖煎紩鐢ㄧ殑涓昏鍘熷洜鏄負(fù)浜?jiǎn)瀹炵?move 璇箟銆備笌浼犵粺鐨勬嫹璐濅笉鍚岋紝move 鐨勬剰鎬濇槸鐩爣瀵硅薄“紿冨彇”鍘熷璞$殑璧勬簮錛屽茍灝嗘簮緗簬“絀?#8221;鐘舵併傚綋鎷瘋礉涓涓璞℃椂錛屽叾瀹炰唬浠鋒槀璐典笖鏃犲繀瑕侊紝move 鎿嶄綔灝卞彲浠ユ浛浠e畠銆傚鍦? string 浜ゆ崲鐨勬椂鍊欙紝浣跨敤 move 鎰忎箟灝辨湁宸ㄥぇ鐨勬ц兘鎻愬崌錛屽鍘熸柟妗堟槸榪欐牱鐨勶細(xì)<br /> </p><div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>void naiveswap(string &a, string & b)  </span></li><li>{  </li><li> string temp = a;  </li><li> a=b;  </li><li> b=temp;  </li><li>}  </li></ol></div> <br /> 榪欑鏂規(guī)寰堝偦寰堝ぉ鐪燂紝寰堟參錛屽洜涓洪渶瑕佺敵璇峰唴瀛橈紝鐒跺悗鎷瘋礉瀛楃錛岃?move 灝卞彧闇瑕佷氦鎹袱涓暟鎹垚鍛橈紝鏃犻』鐢寵銆侀噴鏀懼唴瀛樺拰鎷瘋礉瀛楃鏁扮粍錛?br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>void moveswapstr(string& empty, string & filled)  </span></li><li>{  </li><li><span>//pseudo code, but you get the idea  </span></li><li> <span>size_t sz=empty.size();  </span></li><li> <span>const char *p= empty.data();  </span></li><li><span>//move filled's resources to empty  </span></li><li> empty.setsize(filled.size());  </li><li> empty.setdata(filled.data());  </li><li><span>//filled becomes empty  </span></li><li> filled.setsize(sz);  </li><li> filled.setdata(p);  </li><li>}  </li></ol></div> <br /> 瑕佸疄鐜版敮鎸?move 鐨勭被錛岄渶瑕佸0鏄?move 鏋勯犲嚱鏁板拰 move 璧嬪兼搷浣滅錛屽涓嬶細(xì)<br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>class Movable  </span></li><li>{  </li><li>Movable (Movable&&); <span>//move constructor  </span></li><li>Movable&& operator=(Movable&&); <span>//move assignment operator  </span></li><li>};  </li></ol></div> <br /> C++11 鐨勬爣鍑嗗簱騫挎硾浣跨敤 move 璇箟錛屽緢澶氱畻娉曞拰瀹瑰櫒閮藉凡緇忎嬌鐢?move 璇箟浼樺寲榪囦簡(jiǎn)銆?<h2>C++11 鐨勬爣鍑嗗簱</h2> <p>闄?TR1 鍖呭惈鐨勬柊瀹瑰櫒錛坲nordered_set, unordered_map, unordered_multiset, 鍜寀nordered_multimap錛夛紝榪樻湁涓浜涙柊鐨勫簱錛屽姝e垯琛ㄨ揪寮忥紝tuple錛屽嚱鏁板璞″皝瑁呭櫒絳夈備笅闈粙緇嶄竴浜?C++11 鐨勬爣鍑嗗簱鏂扮壒鎬э細(xì)</p> <h3>綰跨▼搴?/h3> <p>浠庣▼搴忓憳鐨勮搴︽潵鐪嬶紝C++11 鏈閲嶈鐨勭壒鎬у氨鏄茍鍙戜簡(jiǎn)銆侰++11 鎻愪緵浜?thread 綾伙紝涔熸彁渚涗簡(jiǎn) promise 鍜?future 鐢ㄤ互騫跺彂鐜涓殑鍚屾錛岀敤 async() 鍑芥暟妯℃澘鎵ц騫跺彂浠誨姟錛屽拰 thread_local 瀛樺偍澹版槑涓虹壒瀹氱嚎紼嬬嫭鍗犵殑鏁版嵁錛岃繖閲岋紙http://www.devx.com/SpecialReports/Article/38883錛夋湁涓涓畝鍗?鐨?C++11 綰跨▼搴撴暀紼嬶紙鑻辨枃錛夈?/p> <h3>鏂扮殑鏅鴻兘鎸囬拡綾?/h3> <p>C++98 瀹氫箟鐨勫敮涓鐨勬櫤鑳芥寚閽堢被 auto_ptr 宸茬粡琚純鐢紝C++11 寮曞叆浜?jiǎn)鏂扮殑鏅鸿兘閽堝绫?shared_ptr 鍜?unique_ptr銆傚畠浠兘鏄爣鍑嗗簱鐨勫叾瀹冪粍浠跺吋瀹癸紝鍙互瀹夊叏鍦版妸鏅鴻兘鎸囬拡瀛樺叆鏍囧噯瀹瑰櫒錛屼篃鍙互瀹夊叏鍦扮敤鏍囧噯綆楁硶“鍊掕吘”瀹冧滑銆?/p> <h3>鏂扮殑綆楁硶</h3> <p>涓昏鏄?all_of()銆乤ny_of() 鍜?none_of()錛屼笅闈㈡槸渚嬪瓙錛?br /> </p><div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>#include <algorithm>  </span></li><li><span>//C++11 code  </span></li><li><span>//are all of the elements positive?  </span></li><li>all_of(first, first+n, ispositive()); <span>//false  </span></li><li><span>//is there at least one positive element?  </span></li><li>any_of(first, first+n, ispositive());<span>//true  </span></li><li><span>// are none of the elements positive?  </span></li><li>none_of(first, first+n, ispositive()); <span>//false  </span></li></ol></div> <br /> 榪樻湁涓涓柊鐨?copy_n錛?br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>#include <algorithm>  </span></li><li><span>int source[5]={0,12,34,50,80};  </span></li><li><span>int target[5];  </span></li><li><span>//浠?nbsp;source 鎷瘋礉 5 涓厓绱犲埌 target  </span></li><li>copy_n(source,5,target);  </li></ol></div> <br /> iota() 綆楁硶鍙互鐢ㄦ潵鍒涘緩閫掑搴忓垪錛屽畠鍏堟妸鍒濆艱祴鍊肩粰 *first錛岀劧鍚庣敤鍓嶇疆 ++ 鎿嶄綔絎﹀闀垮垵鍊煎茍璧嬪煎埌緇欎笅涓涓凱浠e櫒鎸囧悜鐨勫厓绱狅紝濡備笅錛?br /> <div bg_cpp=""><div><div><a title="view plain">view plain</a></div></div><ol start="1"><li><span>#include <numeric>  </span></li><li><span>int a[5]={0};  </span></li><li><span>char c[3]={0};  </span></li><li>iota(a, a+5, 10); <span>//changes a to {10,11,12,13,14}  </span></li><li>iota(c, c+3, <span>'a'); //{'a','b','c'}  </span></li></ol></div> <br /> 鏄殑錛孋++11 浠嶇劧緙哄皯涓浜涘緢鏈夌敤鐨勫簱濡?XML API錛宻ocket錛孏UI銆佸弽灝?#8212;—浠ュ強(qiáng)鑷姩鍨冨溇鏀墮泦銆傜劧鑰岀幇鏈夌壒鎬у凡緇忚 C++ 鏇村畨鍏ㄣ侀珮鏁堬紙鏄殑錛屾晥鐜囨洿楂樹(shù)簡(jiǎn)錛屽彲浠ュ弬瑙?Google 鐨? 鍩哄噯嫻嬭瘯緇撴灉http://www.itproportal.com/2011/06/07/googles-rates-c-most- complex-highest-performing-language/錛変互鍙?qiáng)鏇村姞鏄撲簬瀛︿範(fàn)鍜屼娇鐢ㄣ?br /> 濡傛灉瑙夊緱 C++ 鍙樺寲澶ぇ浜?jiǎn)锛屼笉蹇呮儕鎭愬Q岃姳鐐規(guī)椂闂存潵瀛︿範(fàn)灝卞ソ浜?jiǎn)銆傚彲鑳藉湪浣犺瀺浼?xì)璇忛氭柊鐗規(guī)т互鍚庯紝浣犱細(xì)鍚屾剰 Stroustrup 鐨勮鐐癸細(xì)C++11 鏄竴闂ㄦ柊鐨勮璦——涓涓洿濂界殑 C++銆?p><br /></p> </div></div></div><img src ="http://www.shnenglu.com/zhaoyg/aggbug/153882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/zhaoyg/" target="_blank">zhaoyg</a> 2011-08-19 21:06 <a href="http://www.shnenglu.com/zhaoyg/archive/2011/08/19/153882.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C++涓皟鐢╬ython鍑芥暟http://www.shnenglu.com/zhaoyg/archive/2011/06/02/147938.htmlzhaoygzhaoygThu, 02 Jun 2011 03:22:00 GMThttp://www.shnenglu.com/zhaoyg/archive/2011/06/02/147938.htmlhttp://www.shnenglu.com/zhaoyg/comments/147938.htmlhttp://www.shnenglu.com/zhaoyg/archive/2011/06/02/147938.html#Feedback0http://www.shnenglu.com/zhaoyg/comments/commentRss/147938.htmlhttp://www.shnenglu.com/zhaoyg/services/trackbacks/147938.html浠ヤ笅鏄氳繃boost::python瀹炵幇鐨勶紝python鐗堟湰2.7
int main()
{
    Py_Initialize();

    PyObject 
* pModule = NULL;//澹版槑鍙橀噺
    PyObject * pFunc = NULL;// 澹版槑鍙橀噺
    pModule =PyImport_ImportModule("helloworld");//榪欓噷鏄璋冪敤鐨勬枃浠跺悕

    
if (!pModule)
        cout 
<< "err";

    handle
<>* _module; // Module handle.

    _module 
= new handle<>(pModule);

    
// 閫氳繃call_method
    int i = call_method<int>(_module->get() , "Hello" , 4);  

    
// 閫氳繃attr
    main_module.attr("Hello")(2);

    
// main_module.attr("Hello")(2); 灞曞紑濡備笅
    object main_module(*_module);
    
object FunObj = main_module.attr("Hello");  // 鑾峰彇hello鍑芥暟瀵硅薄

    
// 閫氳繃object鐖剁被鐨刼perator()鎿嶄綔絎?/span>
    FunObj(1); 

    
// 閫氳繃call
    i = call<int>(FunObj.ptr(), 3);


    { 
// 閬嶅巻涓閬峱ython鍐呯疆綾誨瀷list瀵硅薄涓殑鍊?/span>
        list  List = call_method<list>(_module->get() , "getList");

        
int n = len(List);

        
for (int i = 0 ; i < n ; i++)
        {
            int val = extract<int> (List[i]);  // 鑾峰彇List[i]浜х敓鐨刼bject瀵硅薄涓殑鍊?/span>錛岄氳繃extract妯℃澘鏉ヨ漿鎹?br />            cout << val << " ";
        }
    }


    
return 0;
}





zhaoyg 2011-06-02 11:22 鍙戣〃璇勮
]]>
閫氳繃Boost::Python瀹炵幇C++瀵硅薄瀵煎叆python鐜http://www.shnenglu.com/zhaoyg/archive/2011/06/01/147885.htmlzhaoygzhaoygWed, 01 Jun 2011 09:34:00 GMThttp://www.shnenglu.com/zhaoyg/archive/2011/06/01/147885.htmlhttp://www.shnenglu.com/zhaoyg/comments/147885.htmlhttp://www.shnenglu.com/zhaoyg/archive/2011/06/01/147885.html#Feedback1http://www.shnenglu.com/zhaoyg/comments/commentRss/147885.htmlhttp://www.shnenglu.com/zhaoyg/services/trackbacks/147885.html
浠ヤ笅鍙槸瀵硅嚜宸辨懜绱㈢粨鏋滅殑鎬葷粨錛屽叾涓毦鍏嶅瓨鍦ㄩ敊璇紝濡傛湁浠諱綍閿欒錛屾湜涓嶆儨鎸囨

綾誨畾涔夛細(xì)
class Demo
{
private:
    
int m_val;
    
string m_nam;

public:
    
void setVal(int val)
    {
        m_val 
= val;
    }

    
int getVal()
    {
        
return m_val;
    }

    
void setName(const char *name)
    {
        m_nam 
= name;
    }

    
const char* getName()
    {
        
return m_nam.c_str();
    }
    
void show()
    {
        std::cout 
<<"hello world" <<std::endl;
    }

};

鏂規(guī)硶涓錛?/strong>
void fun1()
{
    Py_Initialize();

    PyObject 
*pModule = PyImport_ImportModule("helloworld");

    handle
<>_module(pModule);

    
object main_module(_module);

    
// 瀵煎嚭C++綾誨埌python涓?/span>
    main_module.attr("Demo")  = class_ <Demo>("Demo") // 閫氳繃boost::python涓殑class_灝咰++綾誨寘瑁呮垚object綾誨瀷錛屽洜涓簆ython涓墍鏈夌被鍨嬮兘鏄痮bject
        .def(
"setVal"&Demo::setVal)
        .def(
"setName"&Demo::setName)
        ;


    
// 閫氳繃boost::python鎻愪緵鐨勬ā鏉垮嚱鏁皃tr錛屾潵灝咲emo瀵硅薄浼犲叆python
    Demo a;
    main_module.attr(
"test"= object(ptr(&a));

    std::cout 
<<"涔嬪墠:"<< a.getName() << " " << a.getVal()<<endl;

    call_method
<void>(pModule , "fun2");

    std::cout 
<<"涔嬪悗:"<< a.getName() << " " << a.getVal()<<endl;

    // 閫氳繃python鍑芥暟榪斿洖C++瀵硅薄
    Demo tmp = call_method<Demo>(pModule , "ReturnCppClass");
    std::cout << tmp.getName() << " " << tmp.getVal() <<endl;
}

helloworld.py鑴氭湰鍐呭錛?br />
def fun2():
    tmp 
= test;
    tmp.setVal(
12345);
    tmp.setName(
"2011-5-19");

def ReturnCppClass():
    tmp = Demo();
    tmp.setName('123456789')
    tmp.setVal(99);
    return tmp;

1.璇彞main_module.attr("test"= object(ptr(&a)); 涓殑"test"鏄痑瀵硅薄鍦ㄨ剼鏈腑鐨勫埆鍚嶏紝浜庢槸鑴氭湰涓彲浠ョ洿鎺ラ氳繃test鍚嶅瓧鎿嶄綔C++瀵硅薄銆?br />2.Demo tmp = call_method<Demo>(pModule , "ReturnCppClass");鏉ュ疄鐜板湪python涓垱寤篊++瀵硅薄錛屽茍涓旇繑鍥炲埌C++涓?br />
鏂規(guī)硶浜岋細(xì)
閫氳繃鏅鴻兘鎸囬拡瀹炵幇C++瀵硅薄鐨勫鍏?strong>
typedef boost::shared_ptr < Demo > Demo_ptr;
void fun2()
{
    Py_Initialize();

    Demo_ptr spD1(
new Demo);

    spD1
->setName("NULL");
    spD1
->setVal(0);

    
try
    {
        PyObject 
*pModule = PyImport_ImportModule("helloworld");

        register_ptr_to_python 
<Demo_ptr>();  // 娉ㄥ唽鍙兘鎸囬拡

        handle
<>* _module;

        _module 
= new handle<>(pModule);
        
object main_module(*_module);

        
object dictionary = main_module.attr("__dict__");
        dictionary[
"Demo"= class_ <Demo>("Demo")
            .def(
"setVal"&Demo::setVal)
            .def(
"setName"&Demo::setName)
            ;

        main_module.attr(
"DemoObj"= spD1; // 娣誨姞鏅鴻兘鎸囬拡鍒拌剼鏈紝騫墮噸鍛藉悕

        call_method
<void>(pModule , "SetObj"); // 鍦ㄨ剼鏈腑閫氳繃鎿嶇旱鏅鴻兘鎸囬拡鏉ユ帶鍒跺璞?/span>

        std::cout 
<< a.getName() << " " << a.getVal()<<endl;
    }
    
catch (error_already_set) 
    {
        PyErr_Print();
    }

    std::cout 
<< "spD1->getName(): " << spD1->getName() <<std::endl;
    std::cout 
<< "spD1->getVal(): " << spD1->getVal() <<std::endl;
}

鑴氭湰鍐呭錛?br />
def SetObj():
    DemoObj.setVal(
100);
    DemoObj.setName(
'hello');

1.register_ptr_to_python <Demo_ptr>(); 娌℃湁榪欏彞榪愯鏃朵細(xì)寰楀埌閿欒銆傚叧浜巖egister_ptr_to_python錛宐oost涓殑瑙i噴鏄細(xì)
“a function template which registers a conversion for smart pointers to Python”

2.
dictionary["Demo"= class_ <Demo>("Demo")
            .def(
"setVal"&Demo::setVal)
            .def(
"setName"&Demo::setName)
            ;
涓庢柟娉曚竴涓殑錛?br />
main_module.attr("Demo")  = class_ <Demo>("Demo")
        .def(
"setVal"&Demo::setVal)
        .def(
"setName"&Demo::setName)
        ;

鏁堟灉涓鏍楓?br />
-----------------------------------------------------------------------------------
浠ヤ笂灝辨槸鍏充簬濡備綍灝咰++瀵硅薄浼犲叆python鐨勪竴鐐逛範(fàn)寰楋紝濡傛湁浠諱綍閿欒錛屾湜涓嶆儨鎸囨
-----------------------------------------------------------------------------------

P.S.: cppblog鎻愪緵鐨勭紪杈戝櫒涓嶅ソ鐢?img src ="http://www.shnenglu.com/zhaoyg/aggbug/147885.html" width = "1" height = "1" />

zhaoyg 2011-06-01 17:34 鍙戣〃璇勮
]]>
鍏充簬C++宓屽叆python鑴氭湰鍚庣殑紼嬪簭鍙戝竷闂http://www.shnenglu.com/zhaoyg/archive/2011/04/25/142659.htmlzhaoygzhaoygMon, 25 Apr 2011 01:57:00 GMThttp://www.shnenglu.com/zhaoyg/archive/2011/04/25/142659.htmlhttp://www.shnenglu.com/zhaoyg/comments/142659.htmlhttp://www.shnenglu.com/zhaoyg/archive/2011/04/25/142659.html#Feedback0http://www.shnenglu.com/zhaoyg/comments/commentRss/142659.htmlhttp://www.shnenglu.com/zhaoyg/services/trackbacks/142659.html
浜庢槸閫氳繃鍏抽敭瀛?#8220;C++宓屽叆python 鍙戝竷”錛屾壘鍒頒簡(jiǎn)涓涓敤py2exe鏉ヨВ鍐抽棶棰橈紝浣嗘垜璇曚簡(jiǎn)鍗婂ぉ閮芥病鎴愬姛錛堜篃璁告槸鎴戣嚜宸辨病寮勫鐨勫師鍥狅紝鍥犱負(fù)浜哄閮芥垚鍔熶簡(jiǎn)錛夈?br />鍐嶅悗鏉ユ垜鎶婂叧閿瓧鏀逛負(fù)浜?#8220;python C++ distribute embed”錛堝嵆鑻辨枃鍏抽敭瀛楋級(jí)錛岃繖涓嬫嫧浜戣澶╀簡(jiǎn)錛屽洜涓哄湪Google鐨勭涓欏靛氨鏈変竴涓鍥藉笘瀛愬叾鏍囬姝e拰鎴戞剰錛堟灉鐒惰嫳璇粰鍔涳級(jí)銆?br />
鐪嬩簡(jiǎn)閭d釜璐村瓙鍙戠幇錛屼箣鎵浠ヤ笉鑳藉湪娌℃湁瀹夎python鐨勬満瀛愪笂榪愯鏄洜涓猴細(xì)


In addition to pythonxy.dll, you also need the entire Python library, i.e. the contents of the lib folder, plus the extension modules, i.e. the contents of the DLLs folder. Without the standard library, Python won't even start, since it tries to find os.py (in 3.x; string.py in 2.x). On startup, it imports a number of modules, in particular site.py.


鍘熸枃錛?a >http://stackoverflow.com/questions/1387906/c-with-python-embedding-crash-if-python-not-installed


zhaoyg 2011-04-25 09:57 鍙戣〃璇勮
]]>
U鐩樼殑璧鋒鍥炵敓璁?/title><link>http://www.shnenglu.com/zhaoyg/archive/2011/02/27/140739.html</link><dc:creator>zhaoyg</dc:creator><author>zhaoyg</author><pubDate>Sun, 27 Feb 2011 07:35:00 GMT</pubDate><guid>http://www.shnenglu.com/zhaoyg/archive/2011/02/27/140739.html</guid><wfw:comment>http://www.shnenglu.com/zhaoyg/comments/140739.html</wfw:comment><comments>http://www.shnenglu.com/zhaoyg/archive/2011/02/27/140739.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/zhaoyg/comments/commentRss/140739.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/zhaoyg/services/trackbacks/140739.html</trackback:ping><description><![CDATA[<p>鍓嶅ぉ寰U鐩橀噷浼犱簡(jiǎn)涓浜涗笢瑗匡紝緇撴灉鍦ㄦ病鏈変紶瀹岀殑鎯呭喌涓嬫嫈浜?jiǎn)U鐩橈紝絳夊啀鐢ㄧ殑鏃跺欏彂鐜版彃涓妘鐩樺悗铏界劧鍙互璇嗗埆錛屼絾鏃犳硶璇誨彇閲岄潰鐨勫唴瀹癸紝騫朵笖涔熸棤娉曟牸寮忓寲銆?br><br>璇曚簡(jiǎn)涓嬬綉涓婄殑涓浜沀鐩樹(shù)慨澶嶅伐鍏鳳紝浣嗗潎鍛婂け璐ャ傚績(jī)鎯寵繖涓嬫姤搴熶簡(jiǎn)錛屽張寰椾拱浜?jiǎn)銆?br><br>涓嶈繃浠婂ぉ鎶辯潃渚ュ垢蹇?jī)鐞嗗張鍦ň|戜笂鎼滀簡(jiǎn)鎼滐紝鍙戠幇鏈変竴縐嶇О涓?#8220;閲忎駭宸ュ叿”鐨勬垜榪樻病璇曪紝鍚庢潵緇撴灉璇佹槑閲忎駭宸ュ叿鏋滅劧濂忔晥錛屾垜鐨勭洏鍙堟椿浜?img border=0 src="http://www.shnenglu.com/Emoticons/QQ/06.gif" width=20 height=20>銆?br><br><br>浠ヤ笅涓?鏁欑▼ & 宸ュ叿<br><br>鏁欑▼閾炬帴錛?a >http://bbs.deepin.org/viewthread.php?tid=1772579</a></p> 閲戝+欏縂3 4G 宸ュ叿錛?a href="http://www.shnenglu.com/Files/zhaoyg/KinstonG3.rar">/Files/zhaoyg/KinstonG3.rar</a> <img src ="http://www.shnenglu.com/zhaoyg/aggbug/140739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/zhaoyg/" target="_blank">zhaoyg</a> 2011-02-27 15:35 <a href="http://www.shnenglu.com/zhaoyg/archive/2011/02/27/140739.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.lnboxue.cn" target="_blank">中文字幕无码av激情不卡久久</a>| <a href="http://www.jiyiabc.cn" target="_blank">久久99九九国产免费看小说</a>| <a href="http://www.uyns.cn" target="_blank">18岁日韩内射颜射午夜久久成人 </a>| <a href="http://www.gzmwx.cn" target="_blank">久久久久亚洲精品无码网址 </a>| <a href="http://www.0769zc.net.cn" target="_blank">伊人色综合久久天天人手人婷</a>| <a href="http://www.ya74.cn" target="_blank">亚洲人成无码网站久久99热国产 </a>| <a href="http://www.hejz.cn" target="_blank">久久精品国产99国产精品亚洲</a>| <a href="http://www.sywanfu.cn" target="_blank">久久久午夜精品</a>| <a href="http://www.hahaowen.cn" target="_blank">国产精品乱码久久久久久软件</a>| <a href="http://www.vnxz.cn" target="_blank">99久久免费国产精品特黄</a>| <a href="http://www.sanbaotong.cn" target="_blank">国产精品久久久久久五月尺</a>| <a href="http://www.gmmk.net.cn" target="_blank">国产69精品久久久久APP下载</a>| <a href="http://www.517down.cn" target="_blank">久久久无码精品亚洲日韩蜜臀浪潮 </a>| <a href="http://www.ruozhu.com.cn" target="_blank">亚洲AV无码久久精品成人</a>| <a href="http://www.010jf.cn" target="_blank">狠狠综合久久综合88亚洲</a>| <a href="http://www.tbssyc.cn" target="_blank">青青草原综合久久大伊人</a>| <a href="http://www.32dd.cn" target="_blank">亚洲狠狠婷婷综合久久久久</a>| <a href="http://www.panxl.cn" target="_blank">国产婷婷成人久久Av免费高清</a>| <a href="http://www.kaoyanonline.cn" target="_blank">久久国产精品无码HDAV</a>| <a href="http://www.lueyi.com.cn" target="_blank">久久国产精品一区二区</a>| <a href="http://www.symfony.net.cn" target="_blank">国产成人无码精品久久久免费</a>| <a href="http://www.3gdd.cn" target="_blank">免费一级欧美大片久久网</a>| <a href="http://www.yunea.cn" target="_blank">久久久午夜精品</a>| <a href="http://www.rytaoshumiao.cn" target="_blank">久久国产亚洲高清观看</a>| <a href="http://www.v8893.cn" target="_blank">国产精品久久久天天影视香蕉</a>| <a href="http://www.whoimi.cn" target="_blank">色婷婷狠狠久久综合五月</a>| <a href="http://www.cq928.cn" target="_blank">伊人久久大香线蕉综合Av</a>| <a href="http://www.3xspace.cn" target="_blank">91精品国产高清91久久久久久</a>| <a href="http://www.6nz.com.cn" target="_blank">国产A级毛片久久久精品毛片</a>| <a href="http://www.pouhai.cn" target="_blank">老司机午夜网站国内精品久久久久久久久 </a>| <a href="http://www.d13722.cn" target="_blank">久久精品免费一区二区三区</a>| <a href="http://www.jiulongpu.cn" target="_blank">久久精品不卡</a>| <a href="http://www.jobs0593.cn" target="_blank">无码人妻精品一区二区三区久久久</a>| <a href="http://www.ewokfijaa.cn" target="_blank">精品久久久久久无码专区</a>| <a href="http://www.7-go.cn" target="_blank">久久久无码精品亚洲日韩软件</a>| <a href="http://www.www5303.cn" target="_blank">久久久久人妻一区二区三区</a>| <a href="http://www.sifaguojinb.cn" target="_blank">99久久久国产精品免费无卡顿</a>| <a href="http://www.luluw.cn" target="_blank">久久男人中文字幕资源站</a>| <a href="http://www.fjzgh.cn" target="_blank">久久综合给合久久狠狠狠97色69</a>| <a href="http://www.co1txk.cn" target="_blank">国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 </a>| <a href="http://www.caifu580.cn" target="_blank">青青青伊人色综合久久</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>