锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 銆銆姝e鍓嶉潰鎵璇達紝鍚屾牱鐨勯昏緫緇撴瀯錛屽湪涓婇潰璧嬩簣鐨勬搷浣滀笉鍚岋紝灝辨槸涓嶅悓鐨勬暟鎹粨鏋勩備竴涓暟鎹粨鏋勮鍚屾椂鍖呭惈榪欎袱鏂歸潰鐨勫唴瀹廣?BR>銆銆浣滀負綰挎х粨鏋勭殑鍏稿瀷鈥斺斿爢鏍堬紝鍫嗘爤棣栧厛灝辨槸涓涓嚎鎬х粨鏋勶紝浣嗘槸瀵硅繖涓嚎鎬х粨鏋勪笂榪涜鐨勬搷浣滆繘琛屼竴瀹氱殑闄愬埗錛屽氨鎴愪負浜嗗爢鏍堛傚爢鏍堝彧鑳藉湪琛ㄧ殑涓绔繘琛屾彃鍏ュ拰鍒犻櫎銆傛憳涓嬨奣he Art of Computer Progrmming銆嬩笂瀵瑰吀鍨嬬殑涓夌綰挎х粨鏋勭殑鎿嶄綔鎻忚堪銆?BR> 綆鍗曠殑鏁版嵁緇撴瀯
綆楁硶澶嶆潅搴︿及璁″熀浜庡亣璁撅細鎻掑叆鍜屽垹闄ょ殑浣嶇疆鏄殢鏈虹殑銆傚嵆浠繪剰浣嶇疆涓婂彂鐢熺殑鍙兘鎬т竴鑷淬?BR>閫氳繃姒傜巼涓庣粺璁″鐨勭煡璇嗭紝鍙互姹傚嚭鍩烘湰榪愮畻鐨勫鉤鍧囪繍琛屾鏁般傝繖灝辨槸綆楁硶澶嶆潅搴︾殑璁$畻銆?BR>涓鑸儏鍐碉紝閮藉彲浠ユ妸涓浜涘驚鐜鍙ヤ腑鐨勮鍙ヤ綔涓哄熀鏈繍綆椼傦紙鎴戣嚜宸辯殑瑙佽В錛?BR>
銆銆user聽聽 0.47聽聽聽 #string class
聽聽聽聽聽聽聽 user聽聽 2.55聽聽聽 #C-style haracter string鈥?br />銆銆瀵硅繖涓暟鎹〃紺虹浉褰撶殑鎯婅銆備簬鏄嚜宸插啓浜嗕釜紼嬪簭錛屾祴璇曚竴涓嬩袱涓被鍨嬬殑鏁堢巼銆?br />#include聽<iostream>
#include聽<string>
#include聽<ctime>
using聽namespace聽std;
const聽size_t聽retime=1000000;
int聽main()
{
聽聽聽聽clock_t聽start,聽finish;
聽聽聽聽start=clock();
聽聽聽聽const聽char聽*pc="a聽very聽long聽literal聽string";
聽聽聽聽const聽size_t聽len聽=聽strlen(pc);
聽聽聽聽for(size_t聽ix=0;聽ix!=retime;++ix)
聽聽聽聽
{
聽聽聽聽聽聽聽聽char聽*pc2=聽new聽char[len+1];
聽聽聽聽聽聽聽聽strcpy(pc2,pc);
聽聽聽聽聽聽聽聽if(strcmp(pc2,pc))
聽聽聽聽聽聽聽聽聽聽;
聽聽聽聽聽聽聽聽delete聽[]pc2;
聽聽聽聽}
聽聽聽聽finish=clock();
聽聽聽聽cout<<"C-style聽string聽run聽"<<retime<<"聽times聽needs聽"<<finish-start<<"聽clock聽times";
聽聽聽聽cout<<endl;
聽聽聽聽start=clock();
聽聽聽聽string聽str("a聽very聽long聽literal聽string");
聽聽聽聽for(size_t聽ix=0;ix!=retime;++ix)
聽聽聽聽
{
聽聽聽聽聽聽聽聽string聽str2=str;
聽聽聽聽聽聽聽聽if(str!=str2)
聽聽聽聽聽聽聽聽聽聽;
聽聽聽聽}
聽聽聽聽finish=clock();
聽聽聽聽cout<<"C++聽string聽run聽"<<retime<<"聽times聽needs聽"<<finish-start<<"聽clocks";
聽聽聽聽cout<<endl;
聽聽聽聽return聽錛?/span>;
}
C++ string run 1000000 times needs 110000clocks
鍦ㄨ繖涓暟鎹笅鏄庢樉string鐨勬晥鐜囪楂樸?br />銆銆鑰屽湪windows涓嬩嬌鐢╲c6.0 release緙栬瘧騫惰繍琛岋紝鏁版嵁騫沖潎鍦細
C-style string run 1000000 times needs聽350 clock times
C++ string run 1000000 times needs聽350 clocks
銆銆涓ょ綾誨瀷鐨勬晥鐜囧樊涓嶅
銆銆緇х畫鍦╲s2005涓媟elease緙栬瘧錛屾暟鎹鉤鍧囧湪錛?br />C-style string run 1000000 times needs聽320 clock times
C++ string run 1000000 times needs 370 clocks
銆銆string鏁堢巼瑕佷綆涓涓?br />鍦↙inux騫沖彴涓嬶紝string鐨勬晥鐜囨瘮C-style鐨勮鏁存暣楂樺嚭涓鍊嶆湁澶氥?br />鑰屽湪windows騫沖彴涓嬶紝sting涓嶄絾鏁堢巼涓婄殑浼樺娍娌℃湁浜嗭紝鍙嶈屾瘮C-style榪樿宸?br />涓嶇煡閬撹繖鏄粈涔堝師鍥犮備負浠涔堝湪unix涓嬭姣斿湪windows涓嬪揩濡傛鐨勫銆傝屽湪windows涓婂嵈涓嶈錛?br />蹇殑鍘熷洜鍦ㄥ摢鍛紵
PS:
涓嶇煡閬撴垜鐨勬祴璇曠▼搴忚繖鏍峰瓙鍐欐槸鍚﹀彲浠ャ?br />
]]>
]]>
閲岄潰鏈変笁涓枃浠跺垎鍒涓嬶細(ex2_2.cpp,stack.cpp,stack.h)涓嬮潰璐翠竴涓嬫枃浠剁殑鍐呭銆?BR>
/**///////////ex2_2.cpp///////////
//////////////////////////////
#include "stack.cpp"
SegStack<int> iStack(10);
int main()
{
for(int i(0);i<10;i++)
iStack.push(i);
cout<<iStack;
iStack.output(cout);
for(i=0;i<5;i++)
iStack.pop();
cout<<iStack;
return 0;
}
/**////////////stack.h//////////
///////////////////////////////
#ifndef stack_h_
#define stack_h_
#include <iostream>
using namespace std;
template <class T> class stack
{
public:
virtual void push(const T &x)=0;
virtual void pop()=0;
virtual T Top() const = 0;
virtual bool IsEmpty() const =0;
virtual bool IsFull() const=0;
};
template <class T> class SegStack: public stack<T>
{
public:
SegStack(int mSize);
~SegStack();
bool IsEmpty() const;
bool IsFull() const;
void push(const T &x);
void pop();
T Top() const;
friend ostream& operator << (ostream& out,const SegStack<T>& seg);
void output(ostream& out) const;
private:
T *s;
int maxSize;
int top;
};
#endif
/**/////////////stack.cpp////////////
///////////////////////////////////
#include "stack.h"
template <class T> SegStack<T>::SegStack(int mSize):top(-1)
{
maxSize=mSize;
s = new T[maxSize];
}
template <class T> SegStack<T>::~SegStack()
{
delete []s;
}
template <class T> bool SegStack<T>::IsFull() const
{
return (top==(maxSize-1));
}
template <class T> bool SegStack<T>::IsEmpty() const
{
return (top==-1);
}
template <class T> void SegStack<T>::push(const T &x)
{
if(IsFull())
{
cout<<"The stack is full"<<endl;
}else
{
s[++top]=x;
}
}
template <class T> void SegStack<T>::pop()
{
if(IsEmpty())
{
cout<<"The stack is empty"<<endl;
}else
{
top--;
}
}
template <class T> T SegStack<T>::Top() const
{
return s[top];
}
template <class T> void SegStack<T>::output(ostream& out) const
{
out<<"The stack list is:";
for(int i(0);i<=top;i++)
out<<" "<<s[i];
out<<endl;
}
template <class T> ostream& operator << (ostream& out,const SegStack<T>& seg)
{
out<<"The stack list is:";
for(int i(0);i<=seg.top;i++)
out<<" "<<seg.s[i];
out<<endl;
//seg.output(out);
return out;
}
銆銆鍦ㄦ渶鍚庯紝鎴戣繕鎯抽棶鐨勪竴涓棶棰樻槸錛氫負浠涔堝湪ex2_2.cpp閲?include "stack.h"鏃朵細鏃犳硶緙栬瘧閫氳繃錛岃?include "stack.cpp"鏃跺氨鍙互浜嗗憿錛?BR>銆銆璁板緱鎴戝垰瀛︼跡錛嬶紜鐨勬椂鍊欙紝鑰佸笀璺熸垜璇存妸澶存枃浠跺拰婧愮▼搴忔枃浠跺垎寮錛屾渶涓昏鐨勬槸瑕佽繘琛岀煡璇嗕駭鏉冧繚鎶わ紝褰撲綘鍐欏ソ涓涓瓙紼嬪簭鏃訛紝鍙戝竷灝變笉瑕佺粰瀵規柟婧愮▼搴忥紝鍙緇欏鏂瑰ご鏂囦歡鍜岀紪璇戣繃鏉ョ殑鐩稿簲obj鏂囦歡灝卞彲浠ヤ簡銆備絾鏄粠涓婇潰鐨勪緥瀛愪笂鐪嬫潵錛屽鏋滀笉#include "stack.cpp"灝辨棤娉曠紪璇戦氳繃錛岃繖涓嶅氨浠h〃涓瀹氳緇欐簮紼嬪簭瀵規柟鍚楋紵涓轟粈涔堜細榪欐牱瀛愮殑銆傛垜搴旇濡備綍鍋氬憿錛熷鏋滄垜鎯沖疄鐜版簮紼嬪簭鐨勪繚瀛樸?img src ="http://www.shnenglu.com/Tauruser/aggbug/4156.html" width = "1" height = "1" />
]]>
A stack is a linear list for which all insertions and deletions (and usually all accesses) are made at one end of the list.(鍫嗘爤錛?BR>A queue is a linear list for which all insertions are made at one end of the list; all deletions (and usually all accesses) are made at the other end.錛堥槦鍒楋級
A deque ("double-ended queue") is a linear list for which all insertions and deletions (and usually all accesses) are made at the ends of the list.錛堣繖縐嶅湪涓枃鏁欐潗閲屾病鐪嬪埌錛屾垜鏆備笖鍙畠涓轟袱澶磋泧 ^ ^錛?BR>
銆銆鍫嗘爤鐨勫瓨鍌ㄧ粨鏋勫疄鐜板拰鍓嶉潰璇寸殑涓鏍鳳紝鍙互鐢ㄦ暟緇勬柟寮忥紝鐩綍琛紝鎴栭摼琛ㄦ柟寮忓疄鐜般傚叿浣撶殑瀹炵幇鍜屾搷浣滅殑瀹炵幇鍚屾牱浼氬湪瀹為獙涓彁鍒幫紝榪欓噷灝變笉鍐嶉噸澶嶃?BR>
銆銆鍐嶈皥涓涓嬶紝鍫嗘爤鍦ㄥ疄鐜板簲鐢ㄥ綋涓殑浣跨敤銆?BR>銆銆瀹炰緥錛屽瀛愮▼搴忕殑璋冪敤鍙婅繑鍥炵殑澶勭悊銆傝皟鐢ㄥ瓙紼嬪簭鏃訛紝灝嗗叾鏂偣渚濇鍘嬪叆鍫嗘爤錛岃繑鍥炴椂鍐嶄緷嬈″脊鍑恒傚閫掑綊鐨勮皟鐢ㄣ?BR>銆銆鍙﹀涓涓疄渚嬪氨鏄疄鐜扳滐紜錛嵜椕封濆洓鍔熻兘鐨勮綆楀櫒紼嬪簭銆?BR>
榪欓噷灝卞厛浠嬬粛涓や釜鍩烘湰姒傚康錛屼互鍚庡啀鍙﹁琛ヤ笂瀹炵幇紼嬪簭銆?BR>
涓紑琛ㄨ揪寮忥細榪愮畻絎︽斁鍦ㄤ袱涓繍綆楀璞′箣闂達紝縐頒負涓紑琛ㄨ揪寮忋傝綆楁椂鍏堢畻鎷彿鍐咃紝鍐嶇畻鎷彿澶栵紝澶氬眰鎷彿浠庡唴灞傚悜澶栧眰綆椼傛棤鎷彿鎴栧悓灞傛嫭鍙峰唴鐢卞乏鍚戝彸欏哄簭鎵ц銆?BR>鍚庣紑琛ㄨ揪寮忥細涓嶅啀寮曞叆鎷彿錛岃繍綆楃鏀懼湪涓や釜鎿嶄綔瀵硅薄鍚庨潰錛岀О涓哄悗緙琛ㄨ揪寮忋傝綆楁椂鎵鏈夎繍綆楁寜榪愮畻絎﹀嚭鐜扮殑欏哄簭錛屼弗鏍間粠宸﹀悜鍙籌紝姣忎釜榪愮畻絎﹀彇鍏跺墠闈袱涓搷浣滄暟錛岃繍綆楀悗鐨勭粨鏋滀粛涓轟笅嬈$殑鎿嶄綔鏁幫紝榪欐牱鍋氫笌涓紑琛ㄨ揪寮忚綆椾弗鏍肩瓑浠鳳紝鍗寵綆楁搴忓拰緇撴灉瀹屽叏鐩稿悓銆備笅闈㈢綏鍒楀嚑涓瓑浠風殑涓紑琛ㄨ揪寮忓拰鍚庣紑琛ㄨ揪寮忥細
涓紑琛ㄨ揪寮忥紝鍚庣紑琛ㄨ揪寮?BR>A A
A+B銆銆銆銆AB+
A+B*C ABC*+
A*(B-C)+D ABC-*D+
D+A/(B-C) DABC-/+
That's all for today. THX.
]]>
浣跨敤涓ょ鏂規硶錛?BR>銆銆鏂規硶錛戯細鐢ㄦ暣鏁癷鏉ヤ唬鏇縫i錛屽皢鍒濆搴忓垪鐪嬫垚涓涓暣鏁板簭鍒楀瓨鍌ㄥ湪鍚戦噺p涓紝pi鍑哄垪錛屽皢p[i+1]錛屸︹︼紝p[n]鍓嶇Щ涓涓厓绱狅紝灝唒i鏀懼叆p[n]涓紝鏈鍚庡嚭鍒楁斁鍦╬[1]涓紝鍐嶄綔閫嗗簭銆?BR>銆銆鏂規硶錛掞細姣忓嚭鍒椾竴涓厓绱犲瓨鍏ュ彟涓涓悜閲忎腑錛屼笉縐諱綅錛岃緗爣蹇楋紝鍏ㄩ儴鍑哄垪鍚庯紝鎵撳嵃鍑哄嚭鍒楅『搴忚〃銆?BR>
璇︾粏瑙e喅鍔炴硶璇風偣涓嬮潰鐨勯摼鎺ャ?BR> Josephus闂闈為掑綊鏂規硶錛戣В鍐沖姙娉?/A>
Josephus闂閫掑綊鏂規硶錛戣В鍐沖姙娉?/A>
Josephus闂闈為掑綊鏂規硶錛掕В鍐沖姙娉?BR> Josephus闂閫掑綊鏂規硶錛掕В鍐沖姙娉?/A>
]]>
姝e銆?A class=singleposttitle id=viewpost1_TitleUrl HREF="/Tauruser/archive/2006/03/03/3690.html">鎴戠殑綆楁硶涓庢暟鎹粨鏋勫涔?浜? 銆嬩腑璋堝埌錛屽湪欏哄簭瀛樺偍涓紝鎻掑叆涓庡垹闄ゆ搷浣滅殑瀹炵幇鍏跺叧閿湪浜庡欏哄簭瀛樺偍絀洪棿鐨勭鐞嗐備綔涓洪『搴忓瓨鍌紝杈冧負鍏稿瀷鐨勬槸鍦ㄦ暟緇勪腑榪涜銆傚綋榪涜鎻掑叆鍜屽垹闄ゆ搷浣滄椂錛岄兘瑕佹秹鍙婂埌鍚勪釜鏁扮粍鍏冪礌鐨勭Щ浣嶏紝縐諱綅鐨勯『搴忔槸鍏抽敭鐨勶紝涓涓嶅皬蹇冩悶閿欎簡縐諱綅鐨勯『搴忓氨鍙兘瀵艱嚧鏁扮粍鍏冪礌鍐呭鐨勪涪澶便?BR>
#include <iostream>
2using namespace std;
3int a[20];
4int count;
5int choice;
6bool Exit(0);
7void insert(int *line);
8void del(int *line);
9void display(int *line);
10
11
12int _tmain(int argc, _TCHAR* argv[])
13{
14 for(int i(0);i<10;i++)
15 a[i]=i;
16 count=10;
17 while(!Exit)
18
{
19 cout<<"1.insert a num"<<endl;
20 cout<<"2.delete a num"<<endl;
21 cout<<"3.dispaly the list"<<endl;
22 cout<<"0.exit"<<endl;
23 cout<<"please input your choice:";
24 cin>>choice;
25 if(choice==1)
26
{
27 insert(a);
28 }
29 else if(choice ==2)
30
{
31 del(a);
32 }
33 else if(choice==3)
34
{
35 display(a);
36 }
37 else if(choice==0)
38
{
39 Exit=true;
40 }
41 }
42 cout<<"Power by Tauruser";
43 return 0;
44
45}
46
47void insert(int *line)
48{
49 int loc,num;
50 cout<<"where you would like to insert:";
51 cin>>loc;
52 if(loc<1 || loc>count+1)
53
{
54 cout<<"data overflow";
55 return;
56 }
57 cout<<"what num you would like to insert:";
58 cin>>num;
59 for(int i=count;i>loc-1;i--)
60
{
61 line[i]=line[i-1];
62 }
63 count++;
64 line[loc-1]=num;
65}
66
67void del(int *line)
68{
69 int loc;
70 cout<<"which num you would like to delete:";
71 cin>>loc;
72 if(loc<1 || loc>count)
73
{
74 cout<<"data overflow";
75 return;
76 }
77 for(int i=loc-1;i<count-1;i++)
78
{
79 line[i]=line[i+1];
80 }
81 count--;
82}
83
84void display(int *line)
85{
86 for(int i(0);i<count;i++)
87
{
88 cout<<"No."<<i+1<<" num is "<<line[i]<<endl;
89 }
90}
91
PS:鍙﹀璇翠竴鐐癸紝鏈夊悓瀛﹂棶鎴戜負浠涔堝湪VS.net騫沖彴閲岃佹槸娌℃湁鍔炴硶#include <iostream.h>銆傛垜鎯沖彲鑳絍S.net宸茬粡鍦–++涓斁寮冩敮鎸佽繖涓簡銆傚彲浠ユ崲鎴?
#include <iostream>
using namespace std;
]]>
銆銆鍑犱綍涓婄殑瀛︿範浠庣偣錛屽埌綰匡紝鍒伴潰銆傝屽湪鏁版嵁緇撴瀯涓婏紝灝變粠鏈綆鍗曠殑綰挎х粨鏋勫紑濮嬨?BR>
錛掋侊紤綰挎х粨鏋勩浠庨昏緫涓婃潵鐪嬫槸綰挎у叧緋?BR>銆銆銆姣忎竴涓妭鐐歸兘鏈変竴涓敮涓鐨勫墠椹變篃鍚庣戶錛岃妭鐐逛箣闂存湁鍏堝悗鐨勪箣鍒嗐?BR>涓浜涘搴旂殑涓嫳鏂囷細
銆銆銆linear list 綰挎ц〃 predecesser 鐩存帴鍓嶉┍銆successor 鐩存帴鍚庣戶
鍩烘湰姒傚康鏈夛細
鈶犵粨鐐?BR>鈶″吀鍨嬬殑瀛樺偍鏂瑰紡錛氶『搴忓瓨鍌ㄥ嵆鐗╃悊涓庨昏緫欏哄簭涓鑷?BR>鈶㈠熀鏈繍綆?BR>銆鈶村彇
銆鈶典慨鏀?BR>銆鈶舵彃鍏?BR>銆鈶峰垹闄?BR>銆鈶告帓搴?BR>銆鈶規煡鎵?BR>銆鈶烘祴璇?BR>鍏朵腑鈶垛懛涓昏娑夊強絀洪棿鐨勯噸鏂扮粍緇囷紝鈶糕懝涓昏娑夊強鏃墮棿澶嶆潅搴﹂棶棰樸?BR>
鍏充簬鎻掑叆涓庡垹闄ょ殑綆楁硶錛屽皢鍦ㄦ暟鎹粨鏋勭殑瀹為獙涓皥鍒般?BR>
鈶g畻娉曞鏉傚害浼拌錛堝叧閿湪浜庤綆楀熀鏈繍綆楄繘琛岀殑嬈℃暟錛?BR>
鏁扮粍鏂瑰紡瀹炵幇鐨勭嚎鎬ц〃鏈変笉瓚籌紝鍙氳繃鐢ㄧ洰褰曡〃鐨勫艦寮忓姞浠ュ厠鏈嶃?BR>
灝嗙粨鐐圭殑搴忓彿瀛樺偍鍦ㄩ『搴忚〃涓紝鑰岀粨鐐圭殑鍐呭鍒欏彲鐢ㄥ悇縐嶆柟寮忛殢鏈哄瓨鍌紝鏃㈠彲瑙e喅瀛樺偍絀洪棿鐨勫垎鏁fч棶棰橈紝涔熷彲浠ュ疄鐜板揩閫熸煡鎵俱?/P>
銆銆
銆銆綆楁硶涓庢暟鎹粨鏋勫湪紼嬪簭璁捐涓殑浠介噺鏄笉璦鑰屽柣鐨勩?BR>
鏁版嵁緇撴瀯涓昏鍖呮嫭涓夋柟闈㈢殑鍐呭錛氶昏緫緇撴瀯銆佸瓨鍌ㄧ粨鏋勩佹湁鍏蟲搷浣溿傞昏緫緇撴瀯涓庡瓨鍌ㄧ粨鏋勭殑杞寲銆傚悓鏍蜂竴縐嶉昏緫緇撴瀯鍜屽瓨鍌ㄧ粨鏋勶紝濡傛灉鍦ㄥ畠浠笂闈㈣祴浜堜笉鍚岀殑鎿嶄綔錛屽畠浠篃鏄笉鍚岀殑鏁版嵁緇撴瀯銆傚氨濡傞槦鍒楋紝鍫嗘爤涔嬮棿鐨勫樊鍒?BR>
閫昏緫緇撴瀯鍖呮嫭鏈夌嚎鎬х粨鏋勫拰闈炵嚎鎬х粨鏋勩傝岄潪綰跨粨鏋勫張鍙垎涓烘爲銆佸浘銆佺綉鍑犵
瀛樺偍緇撴瀯鏈夛細鈶撮『搴忔柟娉曘鈶甸摼鎺ユ柟娉曘鈶剁儲寮曟柟娉曘鈶鋒暎鍒楁柟娉?BR>
綆楁硶琛ㄧず褰㈠紡鏈夛細鈶磋嚜鐒惰璦琛ㄧず娉曘鈶典吉浠g爜鏂規硶銆鈶舵祦紼嬪浘銆鈶風粨鏋勫寲嫻佺▼鍥俱鈶窹AD鍥?BR>