緇忓父蹇樿鍐欎竴涓嬶細
Example
/* CLOCK.C: This example prompts for how long
* the program is to run and then continuously
* displays the elapsed time for that period.
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void sleep( clock_t wait );
void main( void )
{
long i = 600000L;
clock_t start, finish;
double duration;
/* Delay for a specified time. */
printf( "Delay for three seconds\n" );
sleep( (clock_t)3 * CLOCKS_PER_SEC );
printf( "Done!\n" );
/* Measure the duration of an event. */
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i-- )
;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%2.1f seconds\n", duration );
}
/* Pauses for a specified number of milliseconds. */
void sleep( clock_t wait )
{
clock_t goal;
goal = wait + clock();
while( goal > clock() )
;
}
Output
Delay for three seconds
Done!
Time to do 600000 empty loops is 0.1 seconds
鍦╟++紼嬪簭涓紝鍐呭瓨綆$悊涓粡甯擱殣钘忕潃寰堟繁鐨刡ug銆?br> 铏界劧鎴戜滑涓鑸彲浠ラ噰鐢╲ector,string,map絳夊鍣ㄨ嚜鍔ㄧ鐞嗗唴瀛橈紝
浣嗘秹鍙婂鎬侊紝緇ф壙鐨勬椂鍊欎篃涓嶅彲閬垮厤鐨勮鎵嬪姩綆$悊錛宑++鏍囧噯搴撲腑鎻愪緵鐨?a class="st_tag internal_tag" title="鏍囩 auto_ptr 涓嬬殑鏃ュ織" rel=tag>auto_ptr鑳戒竴瀹氱▼搴︿笂甯姪鎴戜滑銆?br>
auto_ptr鐢ㄦ硶錛?/span>
1.闇瑕佸寘鍚ご鏂囦歡
2.Constructor錛歟xplicit auto_ptr(X* p = 0) throw();
灝嗘寚閽坧浜ょ粰auto_ptr瀵硅薄鎵樼
3.Copy constructor:
auto_ptr(const auto_ptr&) throw();
template
鎸囬拡鐨勬墭綆℃潈浼氬彂鐢熻漿縐?br>
4.Destructor: ~auto_ptr();
閲婃斁鎸囬拡p鎸囧悜鐨勭┖闂?br>
5.鎻愪緵浜嗕袱涓垚鍛樺嚱鏁?br>X* get() const throw();//榪斿洖淇濆瓨鐨勬寚閽堬紝瀵硅薄涓粛淇濈暀鎸囬拡
X* release() const throw();//榪斿洖淇濆瓨鐨勬寚閽堬紝瀵硅薄涓笉淇濈暀鎸囬拡
auto_ptr瀹炵幇鍏抽敭鐐?br>1.鍒╃敤鐗圭偣”鏍堜笂瀵硅薄鍦ㄧ寮浣滅敤鑼冨洿鏃朵細鑷姩鏋愭瀯”
2.瀵逛簬鍔ㄦ佸垎閰嶇殑鍐呭瓨錛屽叾浣滅敤鑼冨洿鏄▼搴忓憳鎵嬪姩鎺у埗鐨勶紝榪欑粰紼嬪簭鍛樺甫鏉ヤ簡鏂逛究浣嗕篃涓嶅彲閬垮厤鐤忓拷閫犳垚鐨勫唴瀛樻硠婕忥紝姣曠珶鍙湁緙栬瘧鍣ㄦ槸鏈鍙潬鐨勩?br>3.auto_ptr閫氳繃鍦ㄦ爤涓婃瀯寤轟竴涓璞錛屽璞涓瓀rap浜嗗姩鎬佸垎閰嶅唴瀛樼殑鎸囬拡p錛屾墍鏈夊鎸囬拡p鐨勬搷浣滈兘杞負瀵瑰璞鐨勬搷浣溿傝屽湪a鐨勬瀽鏋勫嚱鏁頒腑浼氳嚜鍔ㄩ噴鏀緋鐨勭┖闂達紝鑰岃鏋愭瀯鍑芥暟鏄紪璇戝櫒鑷姩璋冪敤鐨勶紝鏃犻渶紼嬪簭鍛樻搷蹇冦?/p>
澶氳鏃犵泭錛岀湅涓涓渶瀹炵敤鐨勪緥瀛愶細
鍒嗘瀽錛?/span>
1.濡傛灉閲囩敤鏂規1錛岄偅涔堝繀欏昏冭檻鍒板嚱鏁板湪鍥爐hrow寮傚父鐨勬椂鍊欓噴鏀炬墍鍒嗛厤鐨勫唴瀛樸?br>榪欐牱閫犳垚鐨勭粨鏋滄槸鍦ㄦ瘡涓垎鏀閮借寰堝皬蹇冪殑鎵嬪姩 delete pTC;
2.濡傛灉閲囩敤鏂規2錛岄偅灝辨棤闇鎿嶅績浣曟椂閲婃斁鍐呭瓨錛屼笉綆oo()鍥犱綍鍘熷洜閫鍑猴紝
鏍堜笂瀵硅薄pTC鐨勬瀽鏋勫嚱鏁伴兘灝嗚皟鐢紝鍥犳鎵樼鍦ㄤ箣涓殑鎸囬拡鎵鎸囩殑鍐呭瓨蹇呯劧瀹夊叏閲婃斁銆?br>
娉ㄦ剰錛?/span>
鑷蟲錛屾櫤鑳芥寚閽堢殑浼樼偣宸茬粡寰堟槑浜嗕簡銆?br>浣嗘槸瑕佹敞鎰忎嬌鐢ㄤ腑鐨勪竴涓櫡闃?閭e氨鏄寚閽堢殑鎵樼鏉冩槸浼氳漿縐葷殑銆?br>渚嬪鍦ㄤ笂渚嬩腑錛屽鏋?br>auto_ptr
auto_ptr
閭d箞,pTC1灝嗘嫢鏈夎鎸囬拡錛岃宲TC娌℃湁浜嗭紝濡傛灉鍐嶇敤pTC鍘誨紩鐢紝蹇呯劧瀵艱嚧鍐呭瓨閿欒銆?br>瑕侀伩鍏嶈繖涓棶棰橈紝鍙互鑰冭檻浣跨敤閲囩敤浜嗗紩鐢ㄨ鏁扮殑鏅鴻兘鎸囬拡錛屼緥濡俠oost::shared_ptr絳?br>
涓漢瑙傜偣
1.
vc++搴撲腑鐨勬櫤鑳芥寚閽坅uto_ptr鏈笉鍍忛兘鍍忓墠闈粙緇嶇殑閭f牱
auto_ptr
auto_ptr
鍏朵腑pTC鎸囬拡騫舵病鏈夎鎵樼錛屽叾鍦板潃榪樻槸鎸囧悜new TC 鐨勩備絾鏄茍娌℃湁鍑虹幇鍚屼竴涓寚閽堥噴鏀句袱嬈$殑闂銆?br>
2.VC涓殑 auto_ptr鏄竴涓璞★紝鍜屽唴緗寚閽堟槸涓嶄竴鏍風殑錛屽畠娌℃湁鏀寔嫻嬭瘯鏅鴻兘鎸囬拡NULL鐨勫姛鑳姐?br>auto_ptr<TestC> p;
if(p == NULL); 騫舵病鏈夊姙娉曢氳繃緙栬瘧銆?br>3.騫朵笉鏀寔灝嗘櫤鑳芥寚閽堣漿鍖栦負鍐呯疆鎸囬拡錛屽錛?br>void print(TestC* p)