標(biāo)準(zhǔn)模板庫(STL)簡介
STL是一個(gè)包含類,算法和迭代器的C++庫;它提供許多計(jì)算機(jī)科學(xué)的基本算法和數(shù)據(jù)結(jié)構(gòu)。STL是一個(gè)基本庫,意味著它的組成有大量的參數(shù):基本上每個(gè)組成部分都是一個(gè)模板。在你使用STL之前要弄清楚模板是怎么工作的。
容器和算法就像許多其他類庫一樣,STL庫也包含容器類:這些類的意圖是用來容納其他對象。STL包含Vector(矢量,向量)類,list(清單),deque(隊(duì)列),set(集),multiset(多重集),map,multimap,hash_set(哈希集),hash_multiset(哈希多重集),hash_map和hash_multimap。所有這些類都是一個(gè)模板,它可以實(shí)例化來容納任何類型的對象。舉個(gè)例子,你可以用vector<int>來代替普通的C數(shù)組,而且vector不用管理分配動態(tài)內(nèi)存。
vector<int> v(3); //聲明一個(gè)包含3個(gè)元素的vector。
v[0] = 7;
v[1] = v[0] + 3;
v[2] = v[0] + v[1]; //v[0] == 7, v[1] == 10, v[2] == 17
STL也包含了很多算法用來操作容器中的數(shù)據(jù)。你可以使一個(gè)vetor中的元素逆向排列,舉個(gè)使用reverse算法的例子。
reverse(v.begin(), v.end()); // v[0] == 17, v[1] == 10, v[2] == 7
調(diào)用這個(gè)reverse函數(shù)需要注意兩個(gè)要點(diǎn)。第一,它不是成員函數(shù),而是一個(gè)全局函數(shù)。第二,它需要兩個(gè)參數(shù)而不是一個(gè):它不是作用在容器上,而是作用在一系列元素上。在這個(gè)具體的例子一系列元素就是整個(gè)容器v。
這些事實(shí)的原理都是一樣的:reverse,像其他STL算法,都是與STL容器類分離的。這意味著reverse不僅僅只能用在vector中的元素,還可以用在lists中的元素,甚至是C數(shù)組中的元素。下面的程序是正確的。
double A[6] = {1.2, 1.3, 1.4, 1.5, 1.6, 1.7};
reverse(A, A + 6);
for(int i=0; i<6; ++i)
cout << "A[" << i << "]=" << A[i];
這個(gè)例子用了一個(gè)范圍,就像逆序一個(gè)vector的例子:reverse的第一個(gè)參數(shù)指向這個(gè)范圍的開始,第二個(gè)參數(shù)指向這個(gè)范圍的末尾的后面。這個(gè)范圍是[A, A+6);這兩個(gè)不對稱的記號讓人想到兩個(gè)不一樣的端點(diǎn),第一個(gè)是這個(gè)范圍的開始,第二個(gè)是這個(gè)范圍末端的后一位。
下一節(jié)《迭代器》
posted @
2012-02-20 21:02 canaan 閱讀(487) |
評論 (0) |
編輯 收藏
1、開始->運(yùn)行 control userpasswords2,彈出用戶帳號對話框。

2、取消“要使用本機(jī),用戶必須輸入密碼”。
3、按下Ctrl+Shift+A,彈出“自動登錄”對話框,設(shè)置好用戶帳號和密碼。
OK,大功告成。
2、
posted @
2012-02-07 10:06 canaan 閱讀(1104) |
評論 (0) |
編輯 收藏
INT 3斷點(diǎn),其機(jī)器碼是CCh,也常稱為CC指令。
對MessageBoxA函數(shù)進(jìn)行的斷點(diǎn)檢測:
FARPROC Uaddr;
BYTE Mark = 0;
(FARPROC&) Uaddr = GetprocAddress ( LoadLibrary("user32.dll"), "MessageBoxA");
Mark = *((BYTE*)Uaddr); //取MessageBoxA函數(shù)第一字節(jié)
if(Mark == 0xCC)
return TRUE;
posted @
2012-02-04 22:40 canaan 閱讀(592) |
評論 (0) |
編輯 收藏
test al,al 測試al是否為0,如果al為0標(biāo)志位ZF=1。
xor al,al al清零。
posted @
2012-02-04 19:53 canaan 閱讀(237) |
評論 (0) |
編輯 收藏
_stdcall調(diào)用
_stdcall是Pascal程序的缺省調(diào)用方式,參數(shù)采用從右到左的壓棧方式,被調(diào)函數(shù)自身在返回前清空堆棧。
WIN32 Api都采用_stdcall調(diào)用方式.
按C編譯方式,_stdcall調(diào)用約定在輸出函數(shù)名前面加下劃線,后面加“@”符號和參數(shù)的字節(jié)數(shù),形如_functionname@number。
posted @
2012-01-13 21:17 canaan 閱讀(78) |
評論 (0) |
編輯 收藏
posted @
2011-08-08 15:09 canaan 閱讀(1020) |
評論 (2) |
編輯 收藏
int CDECL MessageBoxPrintf(TCHAR *szCaption, TCHAR *szFormat,...)
{
TCHAR szBuffer[1024];
va_list pArgList;
va_start(pArgList, szFormat);
_vsntprintf(szBuffer, sizeof(szBuffer)/sizeof(TCHAR), szFormat, pArgList);
va_end(pArgList);
return MessageBox(NULL, szBuffer, szCaption, 0);
}
posted @
2011-08-03 13:13 canaan 閱讀(380) |
評論 (1) |
編輯 收藏
int
WINAPI
WinMain(
HINSTANCE hInstance, //執(zhí)行實(shí)體代號
HINSTANCE hPrevInstance, //判斷自身的其他執(zhí)行實(shí)體是否正在運(yùn)行(32位元Windows版本,該概念已被拋棄。該參數(shù)值總是為NULL 0)
LPSTR lpCmdLine, //用于執(zhí)行程序的命令列
int nShowCmd //程序最初顯示方式
);
此函數(shù)在WINBASE.H中有聲明
WinMain函數(shù)聲明為返回一個(gè)int值。WINAPI標(biāo)識符在WINDEF.H定義 #defina WINAPI __stdcall
WINDEF.H 基本型態(tài)定義
WINNT.H 支持Unicode的型態(tài)定義
WINBASE.H Kernel函數(shù)
WINUSER.H 用戶接口函數(shù)
WINGDI.H 圖形設(shè)備接口函數(shù)
posted @
2011-08-02 21:28 canaan 閱讀(247) |
評論 (0) |
編輯 收藏
STL簡介
目錄
索引
設(shè)計(jì)文檔
其他STL資源
IOstream庫(實(shí)驗(yàn))
如何使用本站
STL下載
分類索引
最新消息
常見問題
允許免費(fèi)使用,復(fù)制,修改,分發(fā)和出售本軟件及其文檔以任何用途。只是在拷貝文件和支持文檔中都要有版權(quán)申明。Silicon Graphics 沒有因?yàn)槿魏侮愂霰拒浖m合范圍。它按原樣提供沒有任何擔(dān)保。
版權(quán)所有© 1994
惠普公司
原文:http://www.sgi.com/tech/stl/
posted @
2010-07-30 09:21 canaan 閱讀(257) |
評論 (0) |
編輯 收藏
電腦感覺慢了很多,看著一大堆垃圾,重裝嘍。
以前都用安裝光盤安裝,都要半個(gè)小時(shí)左右,還要裝驅(qū)動。
這次選擇雨林木風(fēng),10分鐘就搞定了,開心。
雨林木風(fēng)光盤購買地址:http://item.taobao.com/item.htm?id=5651085094
posted @
2010-06-01 13:39 canaan 閱讀(439) |
評論 (4) |
編輯 收藏