在c
語言中幾乎所有的資料結構都需要自己去實現甚至最常用的鍊錶,佇列等。。。,在中國很多程式設計師都是在windows
下成長起來的,很多程式設計師都習慣於使用非語言標準的集合類,入mfc
中的carray
,clist
,cstringarray …
如下圖
在現代的c++程式設計理念中很強調使用類庫,b.j多次強調不應增加太多的語言特性來解決問題(c++語言特性已經夠多了夠複雜了,要不然現在很多人都又回到c的懷抱啦),而是需要提供更好的類庫來解決。
我們應該養成使用c++標準庫的習慣,這也是人類從工程學科積累下來的經驗,這些經過了千錘百鍊的類庫無論是效能和跨平台都做了最好的權衡。為每乙個應用造乙個輪子不僅效率地下,而且在短的時間內你造的輪子不一定好用(bug…)我們不要做「不要重**明輪子」的「英雄」。縱觀其他行業,如計算機硬體,**工業等。。。都體現了這一思想。如:很多國家,都通過某一優良的坦克或汽車底盤。派生出很多類別的作戰車輛。有偵察型。防空型。維修型。這也體現了重用的思想。戰艦也是這樣的,戰艦的船體(包括動力系統,操控系統…)。以這一種成熟的船體來模組化的組合在上層的不同的**系統便可以承擔不同的作戰任務。有防空型,反潛行。反艦型。。。我們也要有這種思想。也不多扯淡了下面演示使用c++ 標準庫給我們帶來的好處,這裡只舉乙個使用stl和傳統方式的對比來體現使用stl 方便之處。更多的stl使用方式可以參考《c++標準庫手冊》。
簡單的例子:
#include #include #include #include #ifndef _countof
#define _countof(array) (sizeof(array)/sizeof(array[0]))
#endif
using namespace std;
void demonstrate_traditionary()
; string strs2[_countof(strs1)];
//copy strs1 to strs2
for (int i=0; i<_countof i>
//compares strs1 and strs2
bool isequal = false;
for (int i=0; i<_countof i>
} if (isequal) else
for (int i=0; i<_countof i else>
struct stringtoupper
};for_each(strs2.begin(), strs2.end(), stringtoupper());
copy(strs2.begin(), strs2.end(), ostream_iterator(cout, "\t"));
cout << endl;
}int _tmain(int argc, _tchar* argv)
執行結果:
C 嵌入匯程式設計序提高計算效率
由於組合語言比c 更接近硬體底層,所以在效能要求高的程式中往往可以採取在c 中嵌入彙編的方式來給程式提速。在vc中可以簡單的通過 asm 來實現。下面通過乙個非常簡單的例子來看彙編交叉編譯和直接的c 之間的效能差距,和執行結果如下 include include time.h define numb...
C 標準模板庫使用
資料結構 描述 實現標頭檔案 向量 vector 連續儲存的元素 列表 list 由節點組成的雙向鍊錶,每個結點包含著乙個元素 雙佇列 deque 連續儲存的指向不同元素的指標所組成的陣列 集合 set 由節點組成的紅黑樹,每個節點都包含著乙個元素,節點之間以某種作用於元素對的謂詞排列,沒有兩個不同...
c標準IO庫使用
雖說大部分場合能用c的都可以用c 代替,但是對於開發庫,還是用c效率高。下面介紹c標準io庫 檔案操作標準i o庫函式 fopen fread fwrite fclose fflush fseek fgetc getc getchar fputc putc putchar fgets gets pr...