锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美理论在线,亚洲欧美日韩国产综合在线,久久精视频免费在线久久完整在线看 http://www.shnenglu.com/flyinghearts/category/14248.htmlzh-cn Sun, 15 Jun 2014 08:04:46 GMT Sun, 15 Jun 2014 08:04:46 GMT 60 SEH寮傚父澶勭悊涓撳埄鍒版湡浜?/title> http://www.shnenglu.com/flyinghearts/archive/2014/06/15/207288.htmlflyinghearts flyinghearts Sun, 15 Jun 2014 02:55:00 GMT http://www.shnenglu.com/flyinghearts/archive/2014/06/15/207288.html http://www.shnenglu.com/flyinghearts/comments/207288.html http://www.shnenglu.com/flyinghearts/archive/2014/06/15/207288.html#Feedback 0 http://www.shnenglu.com/flyinghearts/comments/commentRss/207288.html http://www.shnenglu.com/flyinghearts/services/trackbacks/207288.html 銆銆 銆銆Borland鐨勯偅涓伓蹇冪殑SEH寮傚父澶勭悊涓撳埄錛圢o:5,628,016 Filed: June, 15, 1997錛夛紝緇堜簬鍒版湡浜嗐傚笇鏈汫CC/CLANG鑳藉揩鐐瑰畬鎴恮in32鐨凜++寮傚父鐨凷EH瀹炵幇錛屼笅涓鐗堟湰鐨凣CC錛岃兘璁╃敤鎴蜂笉鍐嶇籂緇揝JLJ錛孌warf2鐨勯夋嫨銆?br /> ]]> mingw gcc鐨勫ご鏂囦歡瀛樺湪緇撴瀯瀹氫箟閿欒錛侊紒 http://www.shnenglu.com/flyinghearts/archive/2013/03/21/198694.htmlflyinghearts flyinghearts Thu, 21 Mar 2013 13:51:00 GMT http://www.shnenglu.com/flyinghearts/archive/2013/03/21/198694.html http://www.shnenglu.com/flyinghearts/comments/198694.html http://www.shnenglu.com/flyinghearts/archive/2013/03/21/198694.html#Feedback 0 http://www.shnenglu.com/flyinghearts/comments/commentRss/198694.html http://www.shnenglu.com/flyinghearts/services/trackbacks/198694.html 鍑嗙‘鐨勮鏄痬ingw鎵鐢ㄧ殑sdk —— w32api錛屽瓨鍦ㄧ粨鏋勫畾涔夐敊璇?br /> 鎵撳紑wingdi.h 瀹氫綅鍒?tagGCP_RESULTSW 鐨勭粨鏋勫畾涔変綅緗紝 typedef struct tagGCP_RESULTSW { DWORD lStructSize; LPWSTR lpOutString; UINT *lpOrder; int *lpDx; int *lpCaretPos; LPWSTR lpClass; //姝g‘鐨勭被鍨嬪簲璇ユ槸 LPSTR LPWSTR lpGlyphs; UINT nGlyphs; int nMaxFit; } GCP_RESULTSW,*LPGCP_RESULTSW; 鏍規嵁msdn, lpClass鐨勭被鍨嬪簲璇ユ槸 LPSTR錛?w32api鍗村皢鍏跺0鏄庝負 LPWSTR銆?br /> 榪欎釜bug錛屽湪2011騫村氨鏈変漢鎶ュ憡浜嗭紝鎹cvs鐗堟湰涔熶慨姝d簡錛屼絾鏄洿鍒扮幇鍦紝瀹樻柟涓嬭澆榪樻槸2011騫村彂甯冪殑閭d釜鏈塨ug鐨勭増鏈紙w32api-3.17-2-mingw32-dev.tar.lzma錛夈?br /> 鍙﹀錛宮ingw-w64錛堟敮鎸佺敓鎴?2浣嶃?4浣嶇▼搴忥級涓嶅瓨鍦ㄨ繖涓棶棰樸?
]]> c++11 鏈鍙嶇洿瑙夌殑鍦版柟 http://www.shnenglu.com/flyinghearts/archive/2012/11/22/195570.htmlflyinghearts flyinghearts Thu, 22 Nov 2012 11:49:00 GMT http://www.shnenglu.com/flyinghearts/archive/2012/11/22/195570.html http://www.shnenglu.com/flyinghearts/comments/195570.html http://www.shnenglu.com/flyinghearts/archive/2012/11/22/195570.html#Feedback 4 http://www.shnenglu.com/flyinghearts/comments/commentRss/195570.html http://www.shnenglu.com/flyinghearts/services/trackbacks/195570.html 1 auto 浼氳嚜鍔ㄦ妸 寮曠敤 鍘婚櫎鎺?br /> int& get(); auto k = get(); // k鐨勭被鍨嬫槸int錛岃屼笉鏄痠nt& Derived object; auto& same_object = (Base&)object; auto another_object = (Base&)object; //浼氶噸鏂版瀯閫犱釜Base瀵硅薄 2 decltype 鏈夋椂浼氳嚜鍔ㄦ妸 寮曠敤 鍔犱笂 int x; decltype((x)) 鍜?decltype(*&x) 鐨勭被鍨嬫槸int&錛岃屼笉鏄痠nt 鍦ㄥ畯涓嬌鐢╠ecltype鏃訛紝瑕佺壒鍒敞鎰忓埆澶氬姞浜嗘嫭鍙楓?br /> 涓嬮潰榪欐浠g爜閿欏湪鍝噷錛?br /> template<typename T, typename R> auto min(T t, R r) -> decltype(t < r ? t : r) { return (t < r ? t : r); } decltype(t < r ? t : r)鐨勭被鍨嬫槸T&鎴朢&錛岃屼笉鏄墍甯屾湜鐨凾鎴朢錛?br /> 鏍囧噯鏄繖鏍瘋瀹氱殑錛?br /> The type denoted by decltype(e) is defined as follows: — if e is an unparenthesized id-expression or an unparenthesized class member access (5.2.5), decltype(e) is the type of the entity named by e. If there is no such entity, or if e names a set of overloaded functions, the program is ill-formed; — otherwise, if e is an xvalue, decltype(e) is T&&, where T is the type of e; — otherwise, if e is an lvalue, decltype(e) is T&, where T is the type of e; — otherwise, decltype(e) is the type of e. 3 std::move銆乻td::forward銆佸彸鍊煎紩鐢?br /> C++11 寮曞叆 鍙沖煎紩鐢紝鍙互鍋氬埌錛氬嚱鏁拌漿鍙戙侀拡瀵逛復鏃跺璞′紭鍖?br /> move鏄姩璇嶏紝浠庡瓧闈笂鐞嗚В濂藉儚鏄縐誨姩瀵硅薄錛屽叾瀹瀞td::move鍙槸綆鍗曠殑灝嗙被鍨嬭漿鎴愬彸鍊煎紩鐢ㄨ屽凡錛侊紒錛?鍙互鐞嗚В鎴?cast_to_rvalue_reference 鎴?treat_as_temporal_object銆?br /> void test1(int&&) {} void test2(int&& value) //娉ㄦ剰錛歷alue鐨勭被鍨嬫槸int錛岃屼笉鏄痠nt&& { test1(value); //鏃犳硶緙栬瘧閫氳繃錛屽洜涓簐alue鐨勭被鍨嬫槸int錛?蹇呴』杞崲綾誨瀷 test1(static_cast<int&&>(value)); //鎴栬?br /> test1(std::forward<int>(value)); } test2鍑芥暟涓紝value鐨勭被鍨嬫槸int錛岃屼笉鏄痠nt&&銆?br /> 榪欐槸涓涓笉寰楀凡鐨勯夋嫨銆傚鏋渧alue鐨勭被鍨嬫槸int&&鐨勮瘽錛屽氨浼氭湁鍓綔鐢細 void increase(int& value) { ++value; } void test3(int&& value) { increase(value); } char ch = 'a'; test3(ch); //鏈剰鏄敼鍙榗h鍊鹼紝浣嗗疄闄呬笂ch鍊間笉浼氭敼鍙橈紝鏀瑰彉鐨勬槸涓存椂瀵瑰儚 閫氳繃杞彂鍑芥暟test3錛宨ncrease鍑芥暟鍙互淇敼涓存椂瀵瑰儚錛?br /> 榪欓犳垚紼嬪簭鍛樼姱鐨勯敊璇紙濡備笂闈㈢殑渚嬪瓙錛夛紝闅句互鍦ㄧ紪璇戞椂灝辮鎵懼嚭鏉ャ?br /> std::forward<T>(value) 絳変環浜?static_cast<T&&>(value)錛屾劅瑙夊悗鑰呮洿瀹規槗鐞嗚В銆?br /> std::forward 璧峰埌鐨勮漿鍙戜綔鐢ㄣ傚鏋淭綾誨瀷涓?R&銆?R&&錛岀粡榪囩被鍨嬭漿鎹㈠悗錛屽叾綾誨瀷榪樻槸鍜屽師鏉ョ殑涓鏍楓?br /> 鍦–++11涓? R& & 絳夊悓浜?R& 錛堝湪c++03涓紝R& &榪欑鍐欐硶鏄潪娉曠殑錛?br /> R&& & 絳夊悓浜?R& R& && 絳夊悓浜?R& R&& && 絳夊悓浜?R&& ]]>decltype鐨勫皬鈥滈櫡闃扁?/title> http://www.shnenglu.com/flyinghearts/archive/2012/08/14/187204.htmlflyinghearts flyinghearts Tue, 14 Aug 2012 13:19:00 GMT http://www.shnenglu.com/flyinghearts/archive/2012/08/14/187204.html http://www.shnenglu.com/flyinghearts/comments/187204.html http://www.shnenglu.com/flyinghearts/archive/2012/08/14/187204.html#Feedback 5 http://www.shnenglu.com/flyinghearts/comments/commentRss/187204.html http://www.shnenglu.com/flyinghearts/services/trackbacks/187204.html decltype(x) 鍜?nbsp; decltype((x)) 鐨勭被鍨嬫槸涓嶄竴鏍風殑銆?/div>
decltype(x) 鍜?nbsp; decltype(*&x) 鐨勭被鍨嬫槸涓嶄竴鏍風殑銆?br />
decltype(x)鐨勭被鍨嬫槸 int
decltype((x)) 鍜?decltype(*&x) 鐨勭被鍨嬫槸 int&
C++11鏍囧噯錛?/div>
The type denoted by decltype(e) is defined as follows: — if e is an unparenthesized id-expression or an unparenthesized class member access (5.2.5), decltype(e) is the type of the entity named by e. If there is no such entity, or if e names a set of overloaded functions, the program is ill-formed; — otherwise, if e is an xvalue, decltype(e) is T&&, where T is the type of e; — otherwise, if e is an lvalue, decltype(e) is T&, where T is the type of e; — otherwise, decltype(e) is the type of e.
]]>
鍐呭祵姹囩紪瀹炵幇鐨勫嚱鏁拌漿鍙?/title> http://www.shnenglu.com/flyinghearts/archive/2012/08/05/186382.htmlflyinghearts flyinghearts Sun, 05 Aug 2012 13:02:00 GMT http://www.shnenglu.com/flyinghearts/archive/2012/08/05/186382.html http://www.shnenglu.com/flyinghearts/comments/186382.html http://www.shnenglu.com/flyinghearts/archive/2012/08/05/186382.html#Feedback 8 http://www.shnenglu.com/flyinghearts/comments/commentRss/186382.html http://www.shnenglu.com/flyinghearts/services/trackbacks/186382.html 璋冪敤CALL(func)錛岃漿涓鴻皟鐢╢unc()錛?div> 璋冪敤CALL(func, arg1, arg2) 錛岃漿涓鴻皟鐢╢unc(arg1, arg2) 浠g爜涓紝瀹廋ALL/STDCALL鍒嗗埆鐢ㄦ潵璋冪敤 __cdecl/__stdcall 璋冪敤瑙勫畾鐨勫嚱鏁?br /> unsafe_call 涓よ呴兘鍙皟鐢紝浣嗗畠涓嶆槸澶氱嚎紼嬪畨鍏ㄧ殑銆?br /> 浠g爜鍙敮鎸亁86 32浣嶏紝 闄ゅ唴宓屾眹緙栭儴鍒嗭紝灝介噺絎﹀悎C++11鏍囧噯銆?br />
鍘熺悊錛?br /> 鍒氳繘鍏ュ嚱鏁版椂錛?br /> [esp] 鍑芥暟榪斿洖鍦板潃
[esp + 4] 絎竴涓弬鏁幫紝鍗寵漿鍙戝嚱鏁扮殑鍦板潃
[esp + 8] 絎簩涓弬鏁幫紝鍗寵漿鍙戝嚱鏁扮殑鐨勭涓涓弬鏁?/div> ...
鍙鍐欎笁琛屾眹緙栨寚浠ゅ疄鐜頒竴涓猚_call鍑芥暟錛屽氨鍙皟鐢ㄨ漿鍙戝嚱鏁?br />
pop eax ; eax涓哄嚱鏁拌繑鍥炲湴鍧
xchg dword ptr[esp], eax ; eax涓鴻漿鍙戝嚱鏁扮殑鍦板潃錛孾esp]涓哄嚱鏁拌繑鍥炲湴鍧
jmp eax
褰撹漿鍙戝嚱鏁版槸__cdecl錛屽嵆杞彂鍑芥暟涓嶄細璋冭妭鏍堬紝鐢變簬鍦╟_call錛宲op eax錛屼嬌esp澶氬姞浜?錛屽洜鑰屽湪璋冪敤瀹宑_call鍚庡簲璇ユ墜鍔ㄥ皢esp鍊煎噺4錛屼繚璇佹爤騫寵 銆?br />
褰撹漿鍙戝嚱鏁版槸__stdcall錛岃漿鍙戝嚱鏁頒細璋冭妭鏍堬紝璋冪敤杞彂鍑芥暟瀹屾瘯鍚庯紝鏍堝凡緇忎繚鎸佸鉤琛★紝鍥犺岃皟鐢╟_call瀹屾瘯錛屼笉搴旇榪涜鏍堟寚閽堣皟鑺傘備技涔庡皢c_call鐨勮皟鐢ㄦ敼涓篲_stdcall鍗沖彲錛屼絾瀹為檯涓奵_call鏈夊彉闀垮弬鏁幫紝鏀規垚__stdcall娌℃晥鏋滐紝姣忔璋冪敤緙栬瘧鍣ㄨ繕鏄細鑷姩鐢熸垚璋冭妭鏍堟寚閽堜唬鐮併傚洜鑰屽彧鑳芥瘡嬈¤皟鐢ㄥ畬姣曪紝緙栬瘧鍣ㄧ粰esp鍔犱簡澶氬皯錛屽氨鎵嬪姩鍑忓灝戙傦紙緙栬瘧鍣ㄤ笉涓瀹氫細鐢熸垚 call xxxx; add esp, xx榪欐牱鐨勪唬鐮侊紝閫氳繃鏀瑰嚱鏁拌繑鍥炲湴鍧錛屽拷鐣ュ悗闈㈢殑add esp, xx鎸囦護鏄緢緋熺硶鐨勫仛娉曘傦級
call_redirect 1 #include < cstdio > 2 #include < cstdarg > 3 #include < windows.h > 4 5 #define CALL( ) c_call(__VA_ARGS__); ASM_SUB_ESP(4); 6 #define STDCALL( ) c_call(__VA_ARGS__); ASM_SUB_ESP(MACRO_ARGS(__VA_ARGS__) * 4); 7 8 #define MACRO_EXPAND(x) x 9 #define MACRO_NTH_ARG(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, ) a9 10 #define MACRO_ARGS( ) \ 11 MACRO_EXPAND(MACRO_NTH_ARG(__VA_ARGS__, 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0 )) 12 13 #if __GNUC__ 14 // please enable option, -masm=intel 15 #define ASM_SUB_ESP(x) asm("lea esp, dword ptr[esp - %0]" : : "i"(x)) 16 17 int c_call( void * pfn, ) asm( " c_call " ); 18 asm( " \n\ 19 c_call: \n\ 20 pop eax; \n\ 21 xchg dword ptr[esp], eax; \n\ 22 jmp eax; \n\ 23 " ); 24 25 int unsafe_call( void * pfn, ) asm( " unsafe_call " ); 26 asm( " \n\ 27 .lcomm old_ret_addr, 4 \n\ 28 .lcomm old_esp_value, 4 \n\ 29 unsafe_call: \n\ 30 pop dword ptr old_ret_addr; \n\ 31 mov dword ptr old_esp_value, esp; \n\ 32 mov eax, dword ptr[esp]; \n\ 33 mov dword ptr[esp], offset last; \n\ 34 jmp eax; \n\ 35 last: \n\ 36 mov esp, dword ptr old_esp_value; \n\ 37 jmp dword ptr old_ret_addr; \n\ 38 " ); 39 40 #elif _MSC_VER 41 #define ASM_SUB_ESP(x) __asm lea esp, dword ptr [esp - x] 42 43 __declspec(naked) int c_call( void * pfn, ) 44 { 45 __asm { 46 pop eax; 47 xchg dword ptr[esp], eax; 48 jmp eax; 49 } 50 } 51 __declspec(naked) int unsafe_call( void * pfn, ) 52 { 53 static void * old_ret_addr; 54 static void * old_esp_value; 55 __asm { 56 pop old_ret_addr; 57 mov old_esp_value, esp; 58 mov eax, dword ptr[esp]; 59 mov dword ptr[esp], offset last; 60 jmp eax; 61 last: 62 mov esp, old_esp_value; 63 jmp old_ret_addr; 64 } 65 } 66 67 #else 68 #error "only gcc and msvc are supported" 69 #endif 70 71 72 void show( const char * format, ) 73 { 74 va_list args; 75 va_start(args, format); 76 vprintf(format, args); 77 va_end (args); 78 } 79 80 void mysleep() { Sleep( 10 ); } 81 82 void test1() 83 { 84 int a = 5 , b = 6 ; 85 show( " %d + %d = %d\n " , a, b, a + b); 86 CALL(( void * )printf, " %d + %d = %d\n " , a, b, a + b); 87 CALL(( void * )mysleep); 88 CALL(( void * )show, " %d + %d = %d\n " , a, b, a + b); 89 } 90 91 void test2() 92 { 93 STDCALL(( void * )MessageBoxA, NULL, " text1 " , " caption1 " , MB_OK); 94 STDCALL(( void * )Sleep, 10 ); 95 STDCALL(( void * )MessageBoxA, NULL, " text2 " , " caption2 " , MB_OK); 96 STDCALL(( void * )Sleep, 100 ); 97 } 98 99 void test3() 100 { 101 int a = 5 , b = 6 ; 102 unsafe_call(( void * )printf, " %d + %d = %d\n " , a, b, a + b); 103 unsafe_call(( void * )mysleep); 104 unsafe_call(( void * )show, " %d + %d = %d\n " , a, b, a + b); 105 unsafe_call(( void * )MessageBoxA, NULL, " text1 " , " caption1 " , MB_OK); 106 unsafe_call(( void * )Sleep, 10 ); 107 unsafe_call(( void * )MessageBoxA, NULL, " text2 " , " caption2 " , MB_OK); 108 unsafe_call(( void * )Sleep, 100 ); 109 } 110 111 int main() 112 { 113 test1(); 114 test2(); 115 test3(); 116 return 0 ; 117 } 118 119 120 ]]>
閬垮厤璁$畻榪囩▼涓嚭鐜版孩鍑虹殑涓涓妧宸?/title> http://www.shnenglu.com/flyinghearts/archive/2012/03/18/168267.htmlflyinghearts flyinghearts Sun, 18 Mar 2012 13:16:00 GMT http://www.shnenglu.com/flyinghearts/archive/2012/03/18/168267.html http://www.shnenglu.com/flyinghearts/comments/168267.html http://www.shnenglu.com/flyinghearts/archive/2012/03/18/168267.html#Feedback 1 http://www.shnenglu.com/flyinghearts/comments/commentRss/168267.html http://www.shnenglu.com/flyinghearts/services/trackbacks/168267.html
鍏堢湅涓閬撻潰璇曢錛?/span>
闀垮害涓?/span> n 鐨勬暟緇勶紝鐢辨暟瀛?/span> 1 鍒?/span> n 緇勬垚錛屽叾涓暟瀛?/span> a 涓嶅嚭鐜幫紝鏁板瓧 b 鍑虹幇涓ゆ錛屽叾瀹冪殑鏁板瓧鎭板ソ鍑虹幇涓嬈°傛庢牱閫氳繃鍙閬嶅巻涓嬈℃暟緇勶紝鎵懼嚭鏁板瓧 a 鍜?/span> b 銆?/span>
鐢變簬鍙兘閬嶅巻涓嬈★紝鍦ㄩ亶鍘嗘暟緇?/span>arr鏃訛紝綆楀嚭 a鍜?/span>b鐨勫樊鍊鹼紝浠ュ強 a鍜?/span>b鐨勫鉤鏂瑰樊錛岄氳繃瑙f柟紼嬶紝鍗沖彲姹傚緱 a鍜?/span>b銆傚叿浣撳仛娉曚負錛?/span>
璁撅細
s1 = 1 + 2 + ... + n (= n * (n + 1) / 2)
s2 = arr[0] + arr[1] + ... + arr[n - 1]
r1 = 1 + 4 + ... + n^2 (= n * (n + 1) * (2 * n + 1) / 6)
r2 = arr[0]^2 + arr[1]^2 + ... + arr[n - 1]^2
c = a - b = s1 - s2
d = a^2 - b^2 = r1 - r2
鏄劇劧錛?/span> a + b = (r1 - r2) / (s1 - s2)
鏍規嵁 a+b鐨勫煎拰 a-b鐨勫鹼紝寰堝鏄撳氨鍙畻鍑?/span>a鍜?/span>b銆?/span>
綆楁硶铏界劧綆鍗曪紝浣嗗疄鐜拌搗鏉ワ紝鍗存湁涓涓緢澶ч棶棰橈細璁$畻 s1銆?/span>s2銆?/span>r1銆?/span>r2榪?/span>4涓暟鏃訛紝璁$畻榪囩▼涓彲鑳藉嚭鐜版孩鍑猴紝閫犳垚緇撴灉涓嶅噯銆傜敱浜庢渶緇堢洰鐨勬槸涓轟簡璁$畻鍑?/span>c鍜?/span>d錛屼竴涓敼榪涚殑鏂規硶鏄細
c = s1 - s2 = (1 - arr[0]) + (2 - arr[1]) + ... + (n - arr[n - 1])
d = (1 - arr[0]^2) + (4 - arr[1]^2) + ... + (n^2 - arr[n - 1]^2)
浣嗚繖鏍風殑鍋氭硶錛屽茍涓嶈兘瑙e喅闂錛?/span>n紼嶅井澶х偣錛岀収鏍峰瓨鍦ㄦ孩鍑洪棶棰樸?/span>
閭d箞鎬庢牱鎵嶈兘閬垮厤璁$畻婧㈠嚭鍛紵絳旀寰堢畝鍗曪紝鐢ㄦā榪愮畻錛?/span> 姣忚繘琛屼竴嬈″姞鍑忚繍綆楁椂錛岄兘鍙栫粨鏋滀負鍘熺粨鏋滈櫎浠ヤ竴涓凍澶熷ぇ鐨勫父鏁?/span>M鐨勪綑鏁般傝繖鏍峰姞鍑忚繍綆椾腑錛屽氨涓嶄細鐜扮幇婧㈠嚭闂銆傛渶鍚庡啀鐢?/span> c % M銆?/span>d % M錛屾帹嫻嬪嚭 c銆?/span>d鐨勫叿浣撳箋傛瘮濡傝錛岃綆?/span>s2鏀逛負璁$畻錛?/span>
s2 % M = ((((arr[0] % M) + arr[1]) % M + ...) % M + arr[n - 1]) %M
浠庤〃闈笂鐪嬶紝閲囩敤妯¤繍綆楀悗錛岃綆楅噺浼氬鍔犲緢澶氥備絾瀹為檯涓婏紝鑻?/span>M鍙栧悎閫傜殑鍊兼椂錛岃綆楅噺騫朵笉浼氬鍔狅紒錛?/span>
鍏堝洖欏句笅璁$畻鏈哄熀鏈煡璇嗭細涓や釜鍚?/span>N浣嶏紙瀵勫瓨鍣ㄤ負 N浣嶏級鐨勪簩榪涘埗鏃犵鍙鋒暣鏁?/span>a鍜?/span>b鐩稿姞錛岃嫢緇撴灉婧㈠嚭浜嗭紝 CPU浼氭庝箞澶勭悊錛熷綋鐒舵槸灝嗘孩鍑虹殑閭d竴浣嶅拷鐣ユ帀錛堝彲鑳借繕瑕佽緗笅婧㈠嚭鏍囧織錛夛紝寰楀埌鐨勭粨鏋滃疄闄呬笂鏄細 (a + b) mod 2^N銆?strong>鏃犵鍙鋒暟闂寸殑綆楁湳榪愮畻錛屾湰璐ㄤ笂灝辨槸妯¤繍綆?/span>銆傜幇鍦ㄧ殑 CPU閮?strong>閲囩敤浜岃ˉ鏁版潵琛ㄧず璐熸暣鏁幫紝鏈川涓婁篃鏄繍鐢ㄦā榪愮畻 錛堟暀縐戜功灝嗕簩琛ユ暟琛ㄧず鐨勮礋鏁存暟綆鍗曞畾涔変負錛氬姝f暣鏁板彇鍙嶅悗鍔?/span>1錛夛紝榪欎笌鏃犵鍙鋒暟闂寸殑榪愮畻鏄竴鑷寸殑錛屽湪瀹炵幇涓婏紝姣旂敤鍏跺畠鏂規硶錛堟瘮濡傝涓琛ユ暟錛夎〃紺鴻礋鏁存暟錛岃浼樼編鏄撳疄鐜般?/span>
鍦?/span>32浣嶅鉤鍙頒笅錛?/span> -x mod 2^32 = 2^32 – x (x > 0) 錛?/span>
鍥犺?/span>-1鐨勪簩榪涘埗琛ㄧず灝辨槸錛?/span>0xFFFFFFFF
浜嗚В浜嗚繖浜涳紝灝變笉浼氬鎬?/span>C/C++鏍囧噯鐨勮瀹氾細鏃犵鍙鋒暟闂寸殑榪愮畻鏄ā榪愮畻涓嶄細婧㈠嚭錛涙湁絎﹀彿鏁拌漿涓烘棤絎︽暟錛岄噰鐢ㄦā榪愮畻鍚庣殑鍊箋傦紙涓轟簡鍏煎娌¢噰鐢ㄤ簩琛ユ暟鐨勬満鍣紝鏃犵鍙鋒暟杞負鏈夌鍙鋒暟鏃訛紝鑻ユ棤絎﹀彿鏁扮殑鏁板艱秴鍑轟簡鏈夌鍙鋒暟鍙〃紺虹殑鑼冨洿錛岀粨鏋滄槸騫沖彴鐩稿叧鐨勩傦級
鍥犺岋紝鍦ㄥ 32浣?/span>CPU騫沖彴錛屽彲浠ュ厛灝嗘湁絎﹀彿鏁拌漿涓烘棤絎﹀彿鏁幫紝鍐嶅彇 M = 2 ^32銆傞渶瑕佺壒鍒敞鎰忕殑鏄紝搴旇閲囩敤澶氬皯浣嶇殑鏃犵鍙鋒暟淇濆瓨璁$畻涓敤鍒扮殑鏁板鹼紝濡備綍閬垮厤妯¤繍綆楀彲鑳藉甫鏉ョ殑闂錛?/span>
①銆鏃犵鍙鋒暟綾誨瀷鐨勯夋嫨錛?/span>
a銆?/span>b鐨勫彇鍊艱寖鍥翠負錛?/span>[1, n]錛?/span>
c % M = (a - b) % M 鐨勫彇鍊艱寖鍥翠負錛?/span>[1, n] (a > b鏃?/span>)錛?/span> [M - n, M - 1] (a < b 鏃?/span>)
榪欎袱涓寖鍥翠笉鑳介噸鍙狅紝鑰屽洜 n < M - n 鍗?/span> 2 * n < M
鑻?/span> M鍙?/span>2^32鐨勮瘽錛屼笖 n < 2^31 錛?/span> 鍙互閲囩敤 32浣嶆棤絎﹀彿鏁拌〃紺?/span>c鐨勫箋?/span>
鏍規嵁 c % M鍊煎湪鍝竴涓寖鍥達紝鍙互紜畾 a > b榪樻槸 a < b錛?/span>
鐢變簬榪愮畻榪囩▼涓兘鏄噰鐢ㄦ棤絎﹀彿鏁拌綆楋紝褰?/span> a < b鏃訛紝蹇呴』榪涜濡備笅璋冩暣錛?/span>
c % M 璋冩暣涓?/span> (-c) % M
d % M 璋冩暣涓?/span> (-d) % M
榪欐牱鎵嶈兘淇濊瘉緇撴灉鐨勬紜с?/span>
② 鐢ㄥ叕寮忚綆楁墍鏈夋暟瀛楃殑鍜屻佸鉤鏂瑰拰鏃訛紝鍙兘鍑虹幇鐨勯棶棰橈細
妯¤繍綆楁弧瓚籌細 (a * b) % M = ((a % M) * (b % M)) % M
浣?strong>涓嶆弧瓚?/strong>錛?/span> (a / b) % M = ((a % M) / (b % M)) % M
鍦ㄨ綆?/span> (n * (n + 1) / 2) % M鏃訛紝 涓嶈兘鍐欐垚錛?/span>
s = ((n * (n + 1)) % M / 2) % M 錛?/span>
鑰屽簲璇ュ啓鎴愶細
if (n % 2 == 0) s = ((n / 2) * (n + 1)) % M
else s = (((n + 1) / 2) * n) % M
鎴栬咃細 s = (INT((n + 1) / 2) * (n + (n + 1) % 2)) % M 錛堝叾涓?/span>INT(x)涓哄彇灝忔暟 x鐨勬暣鏁伴儴浠斤級銆?/span>
瀹屾暣浠g爜錛?/span>
#include < climits > #include < cassert > #define SMALL_ARRAY 0 struct Pair { int zero; int twice; }; // 32浣岰PU騫沖彴錛岄暱搴涓瀹氬皬浜?^16嬈℃柟鏃訛紝琛ㄧず涓涓暟鐨勫鉤鏂瑰鹼紝鍙敤32浣嶆棤絎﹀彿鏁扮被鍨嬶紝鏁堢巼寰堥珮銆?br /> // 闀垮害n鑻ュ湪[2^16, 2^31]鍖洪棿錛屽氨蹇呴』鐢ㄥ埌64浣嶆棤絎﹀彿鏁扮被鍨嬶紝鏁堢巼杈冮珮銆?br /> // 闀垮害n鑻ュ湪[2^31, 2^32)鏃訛紝琛ㄧず 鎵鏈夋暟鐨勫拰sum錛屽氨蹇呴』鏀圭敤64浣嶆棤絎﹀彿鏁扮被鍨嬶紝鏁堢巼涓嶉珮銆?nbsp; Pair find_number( const int arr[], unsigned len) { const unsigned bits = CHAR_BIT * sizeof (unsigned); #if SMALL_ARRAY const unsigned max_len = 1u << (bits / 2u ); typedef unsigned int uint ; #else const unsigned max_len = 1u << (bits - 1 ); typedef unsigned long long uint ; #endif assert(arr && len >= 2 && len < max_len); const unsigned * const data = ( const unsigned * )arr; unsigned sum = 0 ; uint square_sum = 0 ; for (unsigned i = 0 ; i < len; ++ i) { const unsigned value = data[i]; sum += value; square_sum += ( uint )value * value; // 娉ㄦ剰涓や釜鏁扮殑涔樼Н鏄惁浼氭孩鍑?nbsp; } // 1 + 2 + 3 + + len = len * (len + 1) / 2 const uint sum_all = (len + 1 ) / 2u * ( uint )(len + (len + 1 ) % 2u ); // 1^2 + 2^2 + 3^2 + + len^2 = len * (len + 1) * (2 * len + 1) / 6 const unsigned len2 = 2u * len + 1 ; const uint square_sum_all = len2 % 3u == 0 ? len2 / 3u * sum_all : sum_all / 3u * len2; unsigned difference = (unsigned)sum_all - sum; uint square_difference = square_sum_all - square_sum; const bool is_negative = difference > INT_MAX; if (is_negative) { difference = - difference; square_difference = - square_difference; } assert(difference != 0 && square_difference % difference == 0 ); const unsigned sum_two = square_difference / difference; assert((sum_two + difference) % 2u == 0 ); const unsigned larger = (sum_two + difference) / 2u ; const unsigned smaller = (sum_two - difference) / 2u ; if (is_negative) { const Pair result = { smaller, larger}; return result; } const Pair result = { larger, smaller}; return result; } int main() { } ]]>
VC 2010銆error D8027錛屾棤娉曟墽琛宑1xx.dll鐨勮В鍐蟲柟娉?/title> http://www.shnenglu.com/flyinghearts/archive/2011/07/19/151417.htmlflyinghearts flyinghearts Tue, 19 Jul 2011 14:07:00 GMT http://www.shnenglu.com/flyinghearts/archive/2011/07/19/151417.html http://www.shnenglu.com/flyinghearts/comments/151417.html http://www.shnenglu.com/flyinghearts/archive/2011/07/19/151417.html#Feedback 1 http://www.shnenglu.com/flyinghearts/comments/commentRss/151417.html http://www.shnenglu.com/flyinghearts/services/trackbacks/151417.html 銆銆鏅氫笂鎯寵窇涓▼搴忥紝緇撴灉VC 2010澶翠竴嬈$艦宸ワ細銆
cl: 鍛戒護琛?error D8027 :鏃犳硶鎵ц“E:\prog\vc2010\bin\c1xx.dll”
涓婄綉鎼滅儲浜嗕笅錛屼篃娌℃壘鍒頒竴涓В鍐蟲柟娉曪紙
瀹樻柟璇存槑 錛夈傛閮侀椃鐫錛岀獊鐒墮棿鎯沖埌cl.exe鍙互姝e父榪愯錛岃宑1xx.dll涓嶈兘姝e父榪愯錛屼細涓嶄細鏄痗1xx.dll鐨勪緷璧栧簱鍑洪棶棰樹簡錛屼簬鏄皟鍑篸ependency涓鏌ワ紝鏋滅劧灝戜簡涓猰svcp100.dll錛堜及璁℃槸鏌愪釜鍗歌澆杞歡閫犳垚鐨勶級錛屼粠鍒鎷瘋礉涓涓埌bin鐩綍錛岄棶棰樿В鍐熾?br />
]]> 鐢╝sio浼犳枃浠?/title> http://www.shnenglu.com/flyinghearts/archive/2011/07/07/150421.htmlflyinghearts flyinghearts Thu, 07 Jul 2011 15:01:00 GMT http://www.shnenglu.com/flyinghearts/archive/2011/07/07/150421.html http://www.shnenglu.com/flyinghearts/comments/150421.html http://www.shnenglu.com/flyinghearts/archive/2011/07/07/150421.html#Feedback 0 http://www.shnenglu.com/flyinghearts/comments/commentRss/150421.html http://www.shnenglu.com/flyinghearts/services/trackbacks/150421.html 鐪嬩簡鍑犲ぉasio鏂囨。錛屾葷畻鍙互鍐欑偣灝忕▼搴忎簡銆傛湁浜涚粏鑺傝繕鏄病寮勬槑鐧斤紝鍚屾IO濂藉儚榪樹笉鑳借瓚呮椂錛熸湇鍔″櫒绔噰鐢ㄥ紓姝O錛屽鎴風鍒欓噰鐢ㄥ悓姝O銆備紶閫佹枃浠訛紝涓嶅緱涓嶆敞鎰忓埌 C/C++ 2G鏂囦歡闄愬埗錛屽ソ鍍忔病閫氱敤鐨勮В鍐蟲柟娉曘?br />
鍏堝畾涔変笅澶存枃浠訛紝緇熶竴涓媋sio鍜宐oost_asio銆?/p>
#ifndef _FILE_INFO_H_#define _FILE_INFO_H_ #if USE_ASIO_ALONE #include < asio.hpp > #else #include < boost / asio.hpp > namespace asio { using namespace boost::asio; using boost::system::error_code; } #endif struct File_info { typedef unsigned long long Size_type; Size_type filesize; size_t filename_size; File_info() : filesize( 0 ), filename_size( 0 ) {} }; #endif
client_sender // www.cnblogs.com/flyinghearts #include < iostream > #include < cstdio > #include < cstring > #include < boost / shared_ptr.hpp > #include " file_info.h " void sender(asio::io_service & io, const char * ip_address, unsigned port, const char * filename) { typedef asio::ip::tcp TCP; FILE * fp = fopen(filename, " rb " ); if (fp == NULL) { std::cerr << " cannot open file\n " ; return ; } // 浣跨敤鏅鴻兘鎸囬拡錛岄槻姝㈢▼搴忓嚭鐜板紓甯告椂錛宖close鏈璋冪敤銆?/span> boost::shared_ptr < FILE > file_ptr(fp, fclose); clock_t cost_time = clock(); const size_t k_buffer_size = 32 * 1024 ; char buffer[k_buffer_size]; File_info file_info; int filename_size = strlen(filename) + 1 ; size_t file_info_size = sizeof (file_info); size_t total_size = file_info_size + filename_size; if (total_size > k_buffer_size) { std::cerr << " File name is too long " ; return ; } file_info.filename_size = filename_size; fseek(fp, 0 , SEEK_END); file_info.filesize = ftell(fp); rewind(fp); memcpy(buffer, & file_info, file_info_size); memcpy(buffer + file_info_size, filename, filename_size); TCP::socket socket(io); socket.connect(TCP::endpoint(asio::ip::address_v4::from_string(ip_address), port)); std::cout << " Sending file : " << filename << " \n " ; size_t len = total_size; unsigned long long total_bytes_read = 0 ; while ( true ) { socket.send(asio::buffer(buffer, len), 0 ); if (feof(fp)) break ; len = fread(buffer, 1 , k_buffer_size, fp); total_bytes_read += len; } cost_time = clock() - cost_time; if (cost_time == 0 ) cost_time = 1 ; double speed = total_bytes_read * (CLOCKS_PER_SEC / 1024.0 / 1024.0 ) / cost_time; std::cout << " cost time: " << cost_time / ( double ) CLOCKS_PER_SEC << " s " << " transferred_bytes: " << total_bytes_read << " bytes\n " << " speed: " << speed << " MB/s\n\n " ; } int main( int args, char * argc[]) { if (args < 3 ) { std::cerr << " Usage: " << argc[ 0 ] << " ip_address filename1 filename2 \n " ; return 1 ; } asio::io_service io; for ( int i = 2 ; i < args; ++ i) { try { sender(io, argc[ 1 ], 1345 , argc[i]); } catch (std::exception & err) { std::cerr << err.what() << " \n " ; } } } server_receiver // www.cnblogs.com/flyinghearts #include < iostream > #include < cstdio > #include < boost / bind.hpp > #include < boost / shared_ptr.hpp > #include < boost / enable_shared_from_this.hpp > #include " file_info.h " class Session : public boost::enable_shared_from_this < Session > { public : typedef asio::ip::tcp TCP; typedef asio::error_code Error; typedef boost::shared_ptr < Session > Pointer; typedef File_info::Size_type Size_type; static void print_asio_error( const Error & error) { std::cerr << error.message() << " \n " ;} static Pointer create(asio::io_service & io) { return Pointer( new Session(io));} TCP::socket & socket() { return socket_; } ~ Session() { if (fp_) fclose(fp_); clock_ = clock() - clock_; Size_type bytes_writen = total_bytes_writen_; if (clock_ == 0 ) clock_ = 1 ; double speed = bytes_writen * (CLOCKS_PER_SEC / 1024.0 / 1024.0 ) / clock_ ; std::cout << " cost time: " << clock_ / ( double ) CLOCKS_PER_SEC << " s " << " bytes_writen: " << bytes_writen << " bytes\n " << " speed: " << speed << " MB/s\n\n " ; } void start() { clock_ = clock(); std::cout << " client: " << socket_.remote_endpoint().address() << " \n " ; socket_.async_receive( asio::buffer(reinterpret_cast < char *> ( & file_info_), sizeof (file_info_)), boost::bind( & Session::handle_header, shared_from_this(), asio::placeholders::error)); } private : Session(asio::io_service & io) : socket_(io), fp_(NULL), total_bytes_writen_( 0 ) { } void handle_header( const Error & error) { if (error) return print_asio_error(error); size_t filename_size = file_info_.filename_size; if (filename_size > k_buffer_size) { std::cerr << " Path name is too long!\n " ; return ; } // 寰楃敤async_read, 涓嶈兘鐢╝sync_read_some錛岄槻姝㈣礬寰勫悕瓚呴暱鏃訛紝涓嬈℃帴鏀朵笉瀹?/span> asio::async_read(socket_, asio::buffer(buffer_, file_info_.filename_size), boost::bind( & Session::handle_file, shared_from_this(), asio::placeholders::error)); } void handle_file( const Error & error) { if (error) return print_asio_error(error); const char * basename = buffer_ + file_info_.filename_size - 1 ; while (basename >= buffer_ && ( * basename != ' \\ ' && * basename != ' / ' )) -- basename; ++ basename; std::cout << " Open file: " << basename << " ( " << buffer_ << " )\n " ; fp_ = fopen(basename, " wb " ); if (fp_ == NULL) { std::cerr << " Failed to open file to write\n " ; return ; } receive_file_content(); } void receive_file_content() { socket_.async_receive(asio::buffer(buffer_, k_buffer_size), boost::bind( & Session::handle_write, shared_from_this(), asio::placeholders::error, asio::placeholders::bytes_transferred)); } void handle_write( const Error & error, size_t bytes_transferred) { if (error) { if (error != asio::error::eof) return print_asio_error(error); Size_type filesize = file_info_.filesize; if (total_bytes_writen_ != filesize) std::cerr << " Filesize not matched! " << total_bytes_writen_ << " / " << filesize << " \n " ; return ; } total_bytes_writen_ += fwrite(buffer_, 1 , bytes_transferred, fp_); receive_file_content(); } clock_t clock_; TCP::socket socket_; FILE * fp_; File_info file_info_; Size_type total_bytes_writen_; static const unsigned k_buffer_size = 1024 * 32 ; char buffer_[k_buffer_size]; }; class Tcp_server { public : typedef asio::ip::tcp TCP; typedef asio::error_code Error; Tcp_server(asio::io_service & io, unsigned port) : acceptor_(io, TCP::endpoint(TCP::v4(), port)) { start_accept(); } static void print_asio_error( const Error & error) { std::cerr << error.message() << " \n " ;} private : void start_accept() { Session::Pointer session = Session::create(acceptor_.get_io_service()); acceptor_.async_accept(session -> socket(), boost::bind( & Tcp_server::handle_accept, this , session, asio::placeholders::error)); } void handle_accept(Session::Pointer session, const Error & error) { if (error) return print_asio_error(error); session -> start(); start_accept(); } TCP::acceptor acceptor_; }; int main() { std::cout << " Auto receive files and save then in current directory.\n " ; asio::io_service io; Tcp_server receiver(io, 1345 ); io.run(); } ]]> 鏁扮粍宸︽棆杞琸浣?鈥斺?C++鏍囧噯綆楁硶搴撲腑鏈鎮插墽鐨勫嚱鏁幫細rotate http://www.shnenglu.com/flyinghearts/archive/2011/05/27/147403.htmlflyinghearts flyinghearts Fri, 27 May 2011 13:04:00 GMT http://www.shnenglu.com/flyinghearts/archive/2011/05/27/147403.html http://www.shnenglu.com/flyinghearts/comments/147403.html http://www.shnenglu.com/flyinghearts/archive/2011/05/27/147403.html#Feedback 2 http://www.shnenglu.com/flyinghearts/comments/commentRss/147403.html http://www.shnenglu.com/flyinghearts/services/trackbacks/147403.html 瑕佸皢涓涓暟緇勭殑鎵鏈夊厓绱犲悜宸︽棆杞?/span>k浣嶏紝閫氬父鏈変笁縐嶇畻娉曪細
綆楁硶 1錛?/span>鍒嗙粍浜ゆ崲錛夛細
鑻闀垮害澶т簬b錛屽皢ab鍒嗘垚a0 a1 b錛屼氦鎹0 鍜宐錛屽緱ba1 a0 錛屽彧闇鍐嶄氦鎹1 鍜宎0 銆?/span>
鑻闀垮害灝忎簬b錛屽皢ab鍒嗘垚ab0 b1 錛屼氦鎹鍜宐0 錛屽緱b0 ab1 錛屽彧闇鍐嶄氦鎹 鍜宐1 銆?/span>
涓嶆柇灝嗘暟緇勫垝鍒嗗拰浜ゆ崲錛岀洿鍒頒笉鑳藉啀鍒掑垎涓烘銆傚垎緇勮繃紼嬩笌姹傛渶澶у叕綰︽暟寰堢浉浼箋?/span>
璇誨啓鍐呭瓨鍚?n鍒?*n嬈?/span>
綆楁硶 2 (涓夋鍙嶈漿 )
鍒╃敤ba=(br )r (ar )r =(ar br )r 錛屽厛鍒嗗埆鍙嶈漿a銆乥錛屾渶鍚庡啀瀵規墍鏈夊厓绱犺繘琛屼竴嬈″弽杞?/span>
璇誨啓鍐呭瓨鍚勭害2*n嬈?/span>
綆楁硶3 錛堜嬌鐢ㄥ驚鐜摼錛?/span>
鍋囪 n銆乲鐨勬渶澶у叕綰︽暟涓篗錛屽垯鎵鏈夊簭鍙蜂負 (i + j*k) % n (0<= i < M, 0 <= j < n/M) 鐨勫厓绱狅紝鏋勬垚M涓驚鐜摼錛坕鍊肩浉鍚岀殑鍦ㄥ悓涓涓驚鐜摼涓婏級錛?姣忎釜寰幆閾句笂鐨勫厓绱犵Щ鍔ㄥ埌鍓嶄竴涓厓绱犵殑鍏冪礌錛屽氨鍙互浜ゆ崲鍒版渶緇堢粨鏋滀笂鐨勪綅緗紝鍥犺屾誨叡鍙璇誨啓鍐呭瓨鍚刵嬈°傦紙姣斿錛?1 2 3 4 5 6錛屽乏縐?浣嶏紝 1 3 5 鍜?2 4 6鍒嗗埆鏋勬垚涓や釜寰幆閾俱傦級
浜嬪疄涓?/span>C++鏍囧噯綆楁硶搴撴彁渚涗簡鐜版垚鐨勫嚱鏁幫細 rotate鍑芥暟銆傛寜鐞嗚錛屽嚑縐嶇畻娉曢兘姣旇緝綆鍗曪紝緙栬瘧鍣ㄧ殑搴撳嚱鏁板張鏄粡榪囨椂闂存楠岀殑錛屾晥鐜囧嵆浣挎瘮鎵嬪啓鐨勫樊錛屼篃涓嶄細宸お澶氥備絾濡傛灉瀵?/span>rotate鍑芥暟榪涜嫻嬭瘯鐨勮瘽錛屽彲鑳戒細鍙戠幇鏍囧噯搴撶殑鐗堟湰鎱㈠緱鍙笉鏄竴鐐圭偣銆?/span>
瀵?/span>VC 2010錛岃繍琛屽悗闈㈢殑嫻嬭瘯紼嬪簭錛岃嚜瀹氫箟鍑芥暟錛堥噰鐢ㄧ畻娉?/span>2錛夎鐢?/span>99ms 錛岃?/span>std::rotate鍗磋 1656ms 銆傛槸搴撶殑瀹炵幇鑰呬笉鎳傚緱鐢ㄨ繖涓畝鍗曠殑綆楁硶鍚楋紵媯鏌ヤ笅搴撶殑婧愪唬鐮侊紝灝變細鍙戠幇錛氭爣鍑嗙畻娉曞簱涓紝瀵?/span>C++鐨勪笁縐嶈凱浠e櫒錛堝墠鍚戣凱浠e櫒銆佸弻鍚戣凱浠e櫒錛岄殢鏈鴻闂凱浠e櫒錛夛紝鍒嗗埆閲囩敤浜嗕笂闈笁縐嶇畻娉曘傜洿鎺ヨ皟鐢ㄥ叾鍐呴儴鐨勫疄鐜幫紙 std::_Rotat鍑芥暟錛夛紝閲嶆柊嫻嬭瘯涓嬶紝鍙緱鍒頒笅闈㈢粨鏋滐細
榪唬鍣?/span>
鍓嶅悜錛堢畻娉?/span>1錛?/span>
鍙屽悜錛堢畻娉?/span>2錛?/span>
闅忔満璁塊棶錛堢畻娉?/span>3錛?/span>
鏃墮棿錛?/span>ms錛?/span>
46
99
1651
錛堜嬌鐢?/span>GCC 鐨勶紝璇風敤鐗堟湰鍙蜂綆浜?/span>4.5 鐨勮繘琛屾祴璇曪級
浠庣粨鏋滃彲浠ョ湅鍑猴紝鏁堢巼鏄細綆楁硶 1 > 綆楁硶 2 >>> 綆楁硶 3 銆?/span>
浠庣悊璁轟笂璁詫紝綆楁硶 3鍙璇誨啓鍐呭瓨鍚?/span>n嬈★紝搴旇鏄晥鐜囨渶楂樼殑綆楁硶銆傝繖鍦ㄦ瘡嬈″唴瀛樿鍐欑殑寮閿鐩稿樊涓嶅ぇ鏃舵垚绔嬨備絾瀹為檯涓婏紝鐢變簬紜歡闄愬埗錛?/span>CPU瀵瑰唴瀛樼殑璁塊棶閲囩敤鍒嗙駭緙撳瓨鏈哄埗錛氫竴綰х紦瀛樺閲忓緢灝忎絾璁塊棶閫熷害鏈蹇紝瀛樻斁紼嬪簭鐨勬寚浠ゅ拰鏈甯哥敤鐨勬暟鎹紝鑰屼簩銆佷笁綰х紦瀛樺閲忚緝澶т絾璁塊棶閫熷害瑕佹參寰堝銆?/span>CPU鏄棤娉曠粫榪囩紦瀛樼洿鎺ヨ闂唴瀛樻暟鎹紙鏌愪簺鐗規畩鎸囦護鍙互涓嶇敤涓浜屼笁綰х紦瀛橈紝浣嗗畠涔熻鐢ㄥ埌鍏跺畠涓撶敤緙撳瓨錛夛紝瀵逛笉鍦ㄧ紦瀛樹腑鐨勬暟鎹紝蹇呴』鍏堣澆鍏ュ埌緙撳瓨涓紝榪欎釜鎿嶄綔鏄浉褰撴槀璐電殑銆傚澶ф暟緇勬潵璇達紝涓嶅彲鑳藉皢鎵鏈夋暟鎹兘瀛樻斁鍦ㄧ紦瀛樹腑錛岃屽鍐呭瓨鐨勪笉榪炵畫璁塊棶錛?/span>CPU瀵瑰唴瀛樺畾浣嶇殑寮閿錛堝悇綰х紦瀛橀棿鏁版嵁鐨勮皟鏁達紝鍙嶅縐誨叆鎴栫Щ鍑烘暟鎹埌緙撳瓨錛夋槸宸ㄥぇ鐨勶紝榪欏氨閫犳垚浜嗙畻娉?/span>3鐨勬ц兘鍦ㄨ鎯呭喌涓嬮潪甯稿樊銆傛祴璇曞彂鐜幫紝 k = 3鏃訛紝璇ョ畻娉曠殑鏁堢巼灝卞凡緇忕浉褰撳樊浜嗐傚灝忔暟緇勶紝灝界璇ョ畻娉曡鍐欐鏁板皯錛屼絾鐢變簬鍚勭綆楁硶鎵鐢ㄦ椂闂撮兘寰堝皬錛岃繖縐嶄紭鍔垮緢闅句綋鐜板嚭鏉ャ傚彲浠ヨ錛?strong>綆楁硶 3 鍦ㄦ暟瀛︿笂鏄潪甯鎬紭緹庣殑錛屼絾鏄湪瀹為檯搴旂敤涓紝鏄竴縐嶇浉褰撳樊鐨勭畻娉曘?/span>
瀵圭畻娉曠殑閫夋嫨錛屼笉搴旇蹇借鍐呭瓨鍥犵礌銆?/span> 鍦ㄥ闅忔満璁塊棶榪唬鍣ㄧ増鏈殑 roate瀹炵幇涓婄姱榪欎釜閿欒鐨勶紝鍙笉浠呬粎鏄?/span>VC 錛岃繕鏈夎憲鍚嶇殑 STL Port 銆?/span>GCC 錛?/span>GCC 浠?/span>4.5 寮濮?/span>libstdc++ 鏀圭敤綆楁硶 1錛屽茍鍋氫簡浜涗紭鍖栵級錛屼互鍙婃柊鍏寸殑 libc++ 銆傦紙鍏跺畠鐨勭紪璇戝櫒 /搴撴病鐢ㄨ繃錛屼篃灝辨病鏈夋祴璇曘傦級
鍙﹀錛屾祴璇曟椂鍙戠幇 VC 2010 鐨勪竴涓?/span>bug 錛氬墠鍚戣凱浠e櫒鐨勫疄鐜扮増鏈紝褰?/span>k = 0鏃訛紝紼嬪簭鐩存帴鎸備簡銆?/span>
嫻嬭瘯浠g爜錛?/p>
rotate 1 2 // www.cnblogs.com/flyinghearts 3 4 #include < vector > 5 #include < algorithm > 6 #include < iterator > 7 #include < ctime > 8 9 #if __GNUC__ 10 #define ROTATE std::__rotate 11 #elif _MSC_VER 12 #define ROTATE std::_Rotate 13 #else 14 #error "You should use GCC or VC" 15 #endif 16 17 18 19 template < unsigned Count, bool Show, typename T, typename Iterator_tag > 20 void test(T beg, T mid, T end, const Iterator_tag & iterator_tag, const char * str = "" ) 21 { 22 unsigned sum = 0 ; 23 for (unsigned i = 0 ; i != Count; ++ i) { 24 unsigned ta = clock(); 25 ROTATE(beg, mid, end, iterator_tag); 26 ta = clock() - ta; 27 sum += ta; 28 if (Show) printf( " %s %u ms\n " , str, ta); 29 } 30 if (Show) printf( " aveg: %u ms\n\n " , sum / Count); 31 else printf( " %s total: %u ms\n " , str, sum); 32 } 33 34 35 template < unsigned Count, bool is_std, typename T > 36 void test2(T beg, T mid, T end, const char * str = "" ) 37 { 38 unsigned sum = 0 ; 39 for (unsigned i = 0 ; i != Count; ++ i) { 40 unsigned ta = clock(); 41 if (is_std) std::rotate(beg, mid, end); 42 else { 43 std::reverse(beg, mid); 44 std::reverse(mid, end); 45 std::reverse(beg, end); 46 } 47 ta = clock() - ta; 48 sum += ta; 49 printf( " %s %u ms\n " , str, ta); 50 } 51 printf( " aveg: %u ms\n\n " , sum / Count); 52 } 53 54 template < unsigned Count, bool Show, typename T > 55 inline void test3(T beg, T mid, T end) 56 { 57 test < Count, Show > (beg, mid, end, std::forward_iterator_tag(), " forward " ); 58 test < Count, Show > (beg, mid, end, std::bidirectional_iterator_tag(), " bidirectional " ); 59 test < Count, Show > (beg, mid, end, std::random_access_iterator_tag(), " random " ); 60 } 61 62 int main() 63 { 64 const int N = 1e7; 65 const int M = 1024 ; 66 // const int M = 777; 67 std::vector < int > vec(N); 68 std::vector < int > ::iterator beg(vec.begin()), mid(beg + M), end(vec.end()); 69 70 printf( " ------\n " ); 71 test2 < 3 , false > (beg, mid, end, " 3_reverse " ); 72 test2 < 3 , true > (beg, mid, end, " std::rotate " ); 73 74 test3 < 3 , true > (beg, mid, end); 75 76 for ( int i = 1 ; i < 5 ; ++ i) { 77 printf ( " \n%d\n " , i); 78 test3 < 3 , false > (beg, beg + i, end); 79 } 80 81 } 82 ]]>浠庡瓧絎︿覆涓彁鍙栨暟瀛楀茍鎺掑簭杈撳嚭 http://www.shnenglu.com/flyinghearts/archive/2011/03/31/143167.htmlflyinghearts flyinghearts Thu, 31 Mar 2011 15:56:00 GMT http://www.shnenglu.com/flyinghearts/archive/2011/03/31/143167.html http://www.shnenglu.com/flyinghearts/comments/143167.html http://www.shnenglu.com/flyinghearts/archive/2011/03/31/143167.html#Feedback 0 http://www.shnenglu.com/flyinghearts/comments/commentRss/143167.html http://www.shnenglu.com/flyinghearts/services/trackbacks/143167.html 闃呰鍏ㄦ枃 ]]> 銆婄紪紼嬩箣緹庛嬭涔︾瑪璁?2錛? 1.16 24鐐規父鎴忥紙琛ュ厖錛?/title> http://www.shnenglu.com/flyinghearts/archive/2010/08/15/123531.htmlflyinghearts flyinghearts Sun, 15 Aug 2010 15:35:00 GMT http://www.shnenglu.com/flyinghearts/archive/2010/08/15/123531.html http://www.shnenglu.com/flyinghearts/comments/123531.html http://www.shnenglu.com/flyinghearts/archive/2010/08/15/123531.html#Feedback 0 http://www.shnenglu.com/flyinghearts/comments/commentRss/123531.html http://www.shnenglu.com/flyinghearts/services/trackbacks/123531.html 闃呰鍏ㄦ枃 ]]> N涓暟璁$畻24鐐?/title> http://www.shnenglu.com/flyinghearts/archive/2010/08/15/123529.htmlflyinghearts flyinghearts Sun, 15 Aug 2010 15:20:00 GMT http://www.shnenglu.com/flyinghearts/archive/2010/08/15/123529.html http://www.shnenglu.com/flyinghearts/comments/123529.html http://www.shnenglu.com/flyinghearts/archive/2010/08/15/123529.html#Feedback 0 http://www.shnenglu.com/flyinghearts/comments/commentRss/123529.html http://www.shnenglu.com/flyinghearts/services/trackbacks/123529.html 闃呰鍏ㄦ枃 ]]> 銆婄紪紼嬩箣緹庛嬭涔︾瑪璁?2錛? 1.16 24鐐規父鎴?/title> http://www.shnenglu.com/flyinghearts/archive/2010/08/01/121907.htmlflyinghearts flyinghearts Sun, 01 Aug 2010 14:50:00 GMT http://www.shnenglu.com/flyinghearts/archive/2010/08/01/121907.html http://www.shnenglu.com/flyinghearts/comments/121907.html http://www.shnenglu.com/flyinghearts/archive/2010/08/01/121907.html#Feedback 0 http://www.shnenglu.com/flyinghearts/comments/commentRss/121907.html http://www.shnenglu.com/flyinghearts/services/trackbacks/121907.html 闃呰鍏ㄦ枃 ]]> 銆婄紪紼嬩箣緹庛嬭涔︾瑪璁?1錛?2.4 1鐨勬暟鐩?/title> http://www.shnenglu.com/flyinghearts/archive/2010/07/21/120915.htmlflyinghearts flyinghearts Tue, 20 Jul 2010 16:25:00 GMT http://www.shnenglu.com/flyinghearts/archive/2010/07/21/120915.html http://www.shnenglu.com/flyinghearts/comments/120915.html http://www.shnenglu.com/flyinghearts/archive/2010/07/21/120915.html#Feedback 0 http://www.shnenglu.com/flyinghearts/comments/commentRss/120915.html http://www.shnenglu.com/flyinghearts/services/trackbacks/120915.html 闃呰鍏ㄦ枃 ]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
久久视频在线免费观看 |
亚洲第一网站免费视频 |
宅男精品视频 |
亚洲精选视频免费看 |
欧美精品一级 |
亚洲女性裸体视频 |
久久se精品一区精品二区 |
在线观看91精品国产麻豆 |
亚洲国产欧洲综合997久久 |
欧美日本免费 |
久久精品国产2020观看福利 |
久久久999 |
一级日韩一区在线观看 |
亚洲一区亚洲二区 |
国内一区二区三区 |
日韩视频一区二区 |
国产日韩欧美制服另类 |
久久综合久色欧美综合狠狠 |
毛片基地黄久久久久久天堂 |
亚洲视频欧美视频 |
久久激情综合网 |
99视频精品全国免费 |
小嫩嫩精品导航 |
日韩亚洲不卡在线 |
欧美影院成人 |
亚洲视频免费在线 |
久久久综合香蕉尹人综合网 |
一区二区三区欧美视频 |
久久大香伊蕉在人线观看热2 |
亚洲日本乱码在线观看 |
亚洲伊人第一页 |
亚洲精品欧美日韩 |
欧美亚洲综合在线 |
亚洲小视频在线 |
免费观看成人 |
久久综合久久88 |
国产精品亚洲产品 |
亚洲免费观看高清完整版在线观看熊
|
久久久久久久久综合 |
亚洲香蕉网站 |
欧美~级网站不卡 |
六月婷婷一区 |
国产啪精品视频 |
一本久久综合亚洲鲁鲁 |
亚洲国产精品久久人人爱蜜臀
|
六月婷婷一区 |
国产欧美日韩一区二区三区在线观看
|
亚洲一区欧美一区 |
欧美激情精品久久久久 |
美女视频黄免费的久久 |
国产精品一区二区三区乱码 |
亚洲乱码视频 |
一区二区三欧美 |
久久久久久亚洲精品不卡4k岛国 |
久久riav二区三区 |
欧美在线欧美在线 |
欧美午夜精彩 |
99国产精品久久久久老师 |
日韩视频免费观看高清完整版 |
久热成人在线视频 |
欧美fxxxxxx另类 |
亚洲电影在线观看 |
久久精品九九 |
久久久夜精品 |
一区免费观看 |
麻豆成人在线播放 |
亚洲成人在线视频播放 |
最新日韩av |
欧美另类高清视频在线 |
亚洲精品久久久久久久久久久久久 |
在线免费精品视频 |
你懂的视频欧美 |
亚洲国产视频直播 |
一区二区免费在线视频 |
欧美日本在线播放 |
亚洲天堂偷拍 |
久久精品一区二区三区中文字幕 |
韩国三级在线一区 |
美女免费视频一区 |
99在线精品视频在线观看 |
亚洲一区二区影院 |
国产午夜精品全部视频播放 |
欧美在线播放高清精品 |
你懂的国产精品永久在线 |
91久久国产综合久久 |
欧美人与性禽动交情品
|
夜色激情一区二区 |
欧美主播一区二区三区美女 久久精品人
|
国产精品免费网站 |
久久青草欧美一区二区三区 |
亚洲黄色一区 |
先锋影院在线亚洲 |
亚洲国产高清在线观看视频 |
欧美日韩在线播放一区 |
性做久久久久久 |
欧美激情亚洲一区 |
香蕉久久国产 |
亚洲经典三级 |
国产精品资源在线观看 |
男女激情久久 |
午夜精品影院 |
亚洲精品一区二区在线观看 |
久久国产精品毛片 |
99国产欧美久久久精品 |
国产亚洲日本欧美韩国 |
欧美金8天国 |
久久九九国产精品 |
一本色道88久久加勒比精品 |
久久亚裔精品欧美 |
亚洲欧美电影在线观看 |
亚洲娇小video精品 |
国产午夜久久 |
国产精品海角社区在线观看 |
久久最新视频 |
久久精品国产99精品国产亚洲性色 |
亚洲人成网站777色婷婷 |
另类综合日韩欧美亚洲 |
欧美亚洲综合久久 |
宅男精品视频 |
国产亚洲人成a一在线v站 |
久久久精彩视频 |
免费亚洲电影在线观看 |
午夜久久久久久久久久一区二区 |
91久久精品国产91久久性色 |
国产一区二区观看 |
国产精品一区二区视频 |
欧美日韩国产精品专区
|
亚洲黄色在线看 |
欧美不卡视频一区 |
免费永久网站黄欧美 |
久久国产精品久久精品国产 |
亚洲欧美不卡 |
午夜精品久久久久久久99樱桃 |
亚洲视频欧洲视频 |
在线视频你懂得一区二区三区 |
亚洲美女少妇无套啪啪呻吟 |
1024成人 |
亚洲精品免费在线播放 |
亚洲人成网站在线观看播放 |
亚洲高清不卡av |
亚洲国产日韩欧美 |
亚洲人体大胆视频 |
日韩视频在线观看免费 |
夜夜嗨av一区二区三区网站四季av |
亚洲精品乱码久久久久久日本蜜臀
|
亚洲国产精品热久久 |
91久久久精品 |
亚洲最新视频在线播放 |
中文有码久久 |
欧美一区成人 |
久久在线播放 |
欧美激情精品久久久久久大尺度 |
亚洲第一精品在线 |
亚洲精品精选 |
亚洲欧美精品在线观看 |
欧美一区二区三区视频免费播放 |
欧美中日韩免费视频 |
久久久久国产成人精品亚洲午夜 |
久久综合伊人77777蜜臀 |
嫩模写真一区二区三区三州 |
欧美女主播在线 |
国产精一区二区三区 |
黄色一区三区 |
亚洲最新中文字幕 |
欧美一区二区视频免费观看 |
久热这里只精品99re8久 |
亚洲福利专区 |
亚洲一级一区 |
免播放器亚洲一区 |
欧美视频精品一区 |
国际精品欧美精品 |
日韩小视频在线观看专区 |
午夜一级在线看亚洲 |
久久综合九色综合久99 |
91久久精品国产91性色tv |
亚洲欧美国产精品专区久久 |
久久综合色影院 |
国产精品v日韩精品 |
伊人久久大香线 |
亚洲免费视频成人 |
欧美成人在线免费视频 |
在线亚洲电影 |
女女同性精品视频 |
国产欧美一区二区精品秋霞影院 |
亚洲国产一区二区三区a毛片 |
亚洲欧洲99久久 |
亚洲国产人成综合网站 |
欧美一区亚洲 |
欧美日韩在线一区二区三区 |
1769国产精品 |
久久国产综合精品 |
99国产精品久久久久久久 |
久久久久久穴 |
国产一区二区三区久久 |
亚洲午夜极品 |
日韩视频―中文字幕 |
免费欧美在线 |
夜夜夜精品看看 |
久久亚洲精品一区二区 |
国产精品尤物 |