什麼是容器類

FAQ 2.15        在C++中模板是最強大的代碼複用機制.模板最普通的用法是容器,容器是用來建立包含其他對象的對象。有許多不同的容器模板,包括連結的列表(list),向量(vectors)也就是(arrays),sets,和maps。容器模板讓程式員在使用前人總結的精鍊的資料結構中獲益。例如二進位樹,總是保持平衡,雜湊表(hash tables),跳躍表(skip lists),伸展樹(splay

關於鉤子(Hook)

基本概念 鉤子(Hook),是Windows訊息處理機制的一個平台,應用程式可以在上面設定子程以監視指定視窗的某種訊息,而且所監視的視窗可以是其他進程所建立的。當訊息到達後,在目標視窗處理函數之前處理它。鉤子機制允許應用程式截獲處理window訊息或特定事件。 鉤子實際上是一個處理訊息的程式段,通過系統調用,把它掛入系統。每當特定的訊息發出,在沒有到達目的視窗前,鉤子程式就先捕獲該訊息,亦即鉤子函數先得到控

將string轉化為int、double

Method 1:使用C的atoi()和atof()。先利用c_str()轉成C string,再用atoi()與atof()。#include <iostream>#include <string>#include <cstdlib>using namespace std; int main() {   string s = "123";   double n = atof(s.c_str());   //int n = atoi(s.c_str()); 

讀《大話設計模式》---開放-封閉原則

開放-封閉原則是指軟體實體(類,模組,函數等等)應該可以擴充,但是不可以修改,對於擴充是開放的(Open for extension),對於更改是封閉的(Closed for modification)無論模組是多麼的"封閉",都會存在一些無法對之封閉的變化,既然不可能完全封閉,設計人員必須對於他設計的模組應該對那種變化封閉作出選擇。他必須先猜測出最有可能發生的變化種類,然後構造抽象來隔離那些變化,一般等到變化發生時立採取行動面對需求,對程式的改動是通過增加新代碼進行的,而不是更改現有的代碼。 

Splay Tree(伸展樹)

假設想要對一個二叉尋找樹執行一系列的尋找操作。為了使整個尋找時間更小,被查頻率高的那些條目就應當經常處於靠近樹根的位置。於是想到設計一個簡單方法,在每次尋找之後對樹進行重構,把被尋找的條目搬移到離樹根近一些的地方。splay tree應運而生。splay

16進位字串轉為整型

方法一  std::stringstream stream;  string result="10000C";  int n = 0;  stream << result;  stream >>hex>> n;方法二使用boost中的lexical_cast類. string str = "10000C"; int nIndex = lexical_cast <int>(str);  方法三 #include

Skip List(跳躍表)

Skip List 上尋找的基本思想是先從最高的 Level 層上尋找,找到 key 所在的範圍後,再從較低的層次繼續重複尋找操作,直到 Level 1。嚴格意義上說,跳躍表不屬於尋找樹,但它能以極其簡單的實現提供二叉尋找樹的部分功能:插入和尋找。跳躍表操作的時間複雜度期望為O(log

使用::std::vector作為管理動態數組的優先選擇

文章目錄 1. CArray<> VS ::std::vector<> ?2. ::std::vector<> 在哪裡?3. ::std::vector<> 中的類型定義4. ::std::vector<> 的構造5. 訪問 vector<> 中的元素6. ::std::vector<> 的儲存管理7. 添加元素到 vector 中8. 刪除元素9. 作為序列訪問 vector

讀《大話設計模式》---策略模式(Strategy)

策略模式(Strategy) :它定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。 結構圖:  //Strategy抽象類別,定義所有支援的演算法的公用介面。class Strategy{public: Strategy(){}; //演算法方法 virtual void AlgorithmInterface(){};};//封裝了具體演算法或行為,繼承於Strategy//具體演算法Aclass ConcreteStrategyA :

重載New操作符

一、重載規則I.可以重載的操作符+- */ %^& |~ !=>< +=-=*=/= %=^=&=|=>><< >>=<<===!=>= <=&&||++-- ->*,->[]() operator new operator new[]operator delete operator delete []II.不能重載的操作符::..*?

VC編譯器參數設定匯總

CL.exe的全部命令開關         /C:在預先處理輸出中保留備註陳述式     /c:只編譯,不串連,相當於在"Build"菜單下選擇了"Compile"     /D:定義常量和宏,與來源程式裡的#define   有相同效果     /E:預先處理C、C++源檔案,將源檔案中所有的先行編譯指令及宏展開,將注釋去掉,然後將前置處理器的輸出拷貝至標準輸出裝置輸出,並且在每個檔案的開頭和末尾加入#line     /EH:指定編譯器用何種異常處理模型     /EP:同/E,只是去掉了#

多態和動態綁定(polymorphism and dynamic binding)

FAQ 5.11 多態和動態綁定(polymorphism and dynamic binding)C++的這種特點使新的代碼多少可以替代一些舊的代碼:物件導向程式強大的真正原因不在於繼承;而在於它可以將繼承類對象當作基類對象來對待,支援這個特性的機制是多態和動態綁定(polymorphism and dynamic

虛擬記憶體(Virtual Memory)

虛擬記憶體(Virtual Memory)是Windows管理所有可用記憶體的方式。對於32位Windows系統,每個進程所用到的虛擬記憶體地址從0到2^32-1,總容量4GB,其中2GB是與作業系統以及其他所有進程所共用,另外2GB指派給進程獨佔(這就是常說的32位Windows中一個進程最多能用2G記憶體的由來)。4GB虛擬位址空間(Virtual Address Space,VAS)中,2GB的進程獨佔VAS是進程隔離的,換句話說,每個進程都可以從RAM或者硬碟上映射到屬於自己的2GB V

什麼是核心(kernel)對象?

          作為一個軟體開發人員,你會建立,開啟,操作核心對象。系統會建立和操作多種類型的核心對象,例如access token 對象, event 對象,file對象,file-mapping對象,I/O完成連接埠對象,job對象,mailslot對象,mutex對象,pipe對象,process對象,semaphore對象,thread對象,waitable time對象,和threa pool worker

擷取其他程式的資訊(VC實現)

源碼下載 介紹        最近正試著從其他程式的listview控制項中擷取資訊,因為需要傳遞一個指標以便存放取得的字串,但Windows使用的是虛擬記憶體,指標是不允許跨進程訪問的。        Windows是這樣通過虛擬記憶體來管理分配給所有應用程式的記憶體的:它讓程式認為自己擁有2GB的記憶體空間可用,它也通過保護來避免程式互相佔用記憶體.這樣當一個程式有問題時,不會影響到其他程式。        寫了一些代碼之後,我認識到我的指標是不允許的,所以無法工作。通過幾個小時在MSDN上

包含在堆上分配的對象的指標類的基理

FAQ 2.21        (1)總的觀點:努力避免這種狀況,(2)如果無法避免,使用auto_ptr.        盡量避免包含在堆上分配的對象的指標.例如,分析一下一個car類包含一個engine的情行。這兒有兩個選擇:教好的方式是engined對象直接嵌入到car對象內,不好的方式是car對象包含一個指向engine對象的指標,car從堆分配engine對象,下面是例子:#include <iostream>using namespace std;class

SHGetFileInfo函數詳解

SHGetFileInfo函數WINSHELLAPI DWORD WINAPI SHGetFileInfo( LPCTSTR pszPath, DWORD dwFileAttributes, SHFILEINFO FAR *psfi, UINT cbFileInfo, UINT uFlags);pszPath 參數:指定的檔案名稱。 當uFlags的取值中不包含 SHGFI_PIDL時,可直接指定; 當uFlags的取值中包含

將代碼注入到進程的三種方式

[源碼下載] 介紹        在Code Project網站有許多關於password spy的文章,但是這些都是基於Windows Hooks的,還有沒有其他方式能實現這種效果呢?是的,有,不過,先讓我們簡要的回顧一下。要想讀控制項的內容,一般需要給它發送WM_GETTEXT

函數的遞迴和調用

一、基本內容:     C/C++語言中的函數可以遞迴調用,即:可以直接(簡單遞迴)或間接(間接遞迴)地自己調自己。 要點:     1、C/C++語言函數可以遞迴調用。     2、可以通過直接或間接兩種方式調用。目前只討論直接遞迴調用。     二、遞迴條件     採用遞迴方法來解決問題,必須符合以下三個條件:     1、可以把要解決的問題轉化為一個新問題,而這個新的問題的解決方案仍與原來的解決方案相同,只是所處理的對象有規律地遞增或遞減。    

error LNK2019(無法解析的外部符號)

無法解析的外部符號“symbol”是指該符號在函數“function”中被引用,在function中找到了未定義的外部符號 (symbol)。若要解決此錯誤,請提供符號定義或移除引用它的代碼。 1.在 Visual C++ .NET 2003 中,如果使用了 /clr 而未將 CRT 連結到可執行檔,將產生此錯誤。任何由編譯器在未使用 /clr:initialAppDomain 時產生的對象代碼都包含對 _check_commonlanguageruntime_version

總頁數: 61357 1 .... 17635 17636 17637 17638 17639 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.