聲明template參數時, 首碼關鍵字class和typename可以互換;使用關鍵字typename標識嵌套從屬類型名稱, 但不需在基類列表和成員初始化列表內使用.從屬名稱(dependent names): 模板(template)內出現的名稱, 相依於某個模板(template)參數, 如T t;嵌套從屬名稱(nested dependent names):從屬名稱在class內呈嵌套裝, 如T::const_iterator ci;非從屬名稱(non-dependent names):
一、單鏈表的建立有了動態記憶體分配的基礎,要實現鏈表就不難了。所謂鏈表,就是用一組任意的儲存單中繼存放區線性表元素的一種資料結構。鏈表又分為單鏈表、雙向鏈表和迴圈鏈表等。我們先講講單鏈表。所謂單鏈表,是指資料接點是單向排列的。一個單鏈表結點,其結構類型分為兩部分:1、資料域:用來儲存本身資料2、鏈域或稱為指標域:用來儲存下一個結點地址或者說指向其直接後繼的指標。例:typedef struct node{char name[20];struct node
迭代器(iterator) 是一種指標類型, 也分const指標本身(地址) 和 const指標所指的值, 兩種情況;但是寫法和const內建指標有所不同;char * const 相當於 const container<>::iterator; 可以修改指標所指的值, 但不能修改指標的地址;const char * 相當於 container<>::const_iterator; 可以修改指標地址, 但不能修改指標所指的值;注意程式碼範例,
衍生類別因為要調用基類, 所以構造和析構都是按照一定順序進行;構造的順序是: 基(base) -> 派生(derived);即先構造基類, 再構造衍生類別;因為 基類 是獨立於衍生類別的, 即不會調用衍生類別中的對象, 所以應該先被產生;如果衍生類別先於基類產生, 則因為無法調用基類資源, 可能產生失敗;析構的順序是: 派生(derived) -> 基(base); 即先釋放衍生類別, 再釋放基類;因為 衍生類別 需要先釋放調用的基類資源, 所以應該優先釋放;如果基類先析構,
在繼承過程中, 需要區分複製(copy)和虛複製(virtual copy);在衍生類別轉換為基類時, 複製(copy)有可能切掉(sliced down)派生對象的派生部分, 只保留基類部分, 使衍生類別的虛函數無法使用;為了避免此情況, 如果傳入是對象, 則可以定義虛函數clone, 使衍生類別繼承此虛函數, 再傳入容器, 可以重載方法;另外, 如果傳入是實參, 使用shared_ptr<Base>配合make_shared<Derived>添加容器,
智能指標包含兩種"shared_ptr"和"unique_ptr", 由於兩種指標的實現方式不同, 所以傳遞刪除器的方式也不同;"shared_ptr"的傳遞刪除器(deleter)方式比較簡單, 只需要在參數中添加具體的刪除器函數名, 即可; 注意是單參數函數;"unique_ptr"的刪除器是函數模板(function template), 所以需要在模板類型傳遞刪除器的類型(即函數指標(function
非類型模板參數(nontype template parameters), 可以使用整數型別(integral type),指標(pointer) 或者是 引用(reference);綁定非類型整數形參(nontype integral parameter) 的 實參(argument) 必須是常量運算式(constant expression, constexpr);不能把普通的局部對象或者動態對象 綁定 指標或引用的非類型形參, 可以使用全域類型進行綁定;關於類模板(class
tuple容器(元組), 是表示元組容器, 是不包含任何結構的,快速而低質(粗製濫造, quick and dirty)的, 可以用於函數返回多個傳回值;tuple容器, 可以使用直接初始化, 和"make_tuple()"初始化, 訪問元素使用"get<>()"方法, 注意get裡面的位置資訊, 必須是常量運算式(const
Regex(regex), 使用boost的regex標頭檔, 是C++11的新標準, 但是gcc4.8.1並未完全支援, 所以使用boost庫;具體安裝: http://blog.csdn.net/caroline_wendy/article/details/17282187Regex的書寫規範, 以ECMAScript為例, 使用迭代器可以遍曆原字串, 輸出符合要求的所有字串;使用prefix()和suffix()方法, 可以輸出前一個未匹配的字串和後一個未匹配的字串;Regex的子運算式(
隨機訪問流, 使用mark(標記)標註流的位置, 包含兩種方法tell和seek;tell, 是返迴流mark的位置, 包含g和p兩種版本.g表示get, 指輸入資料流; p表示put, 指輸出資料流;seek, 是跳至流mark所指的位置, 也包含g和p兩種版本;seek可以指定位置, 也可以指定位移(offset);代碼如下:/* * cppprimer.cpp * * Created on: 2013.11.28 * Author: Caroline */
伯努利分布(bernoulli distribution), 是判斷某件事情發生或者未發生的機率;給定參數p, 可以修改機率的值, 發生機率(true)是p,未發生機率(false)是1-p;隨機庫, 提供分布對象bernoulli_distribution, 輸出bool值, 發生為true, 未發生為false;伯努利分布, 機率為0.5時, 可以等機率輸出一個二元事件, 如先後順序;注意: 引擎和分布對象, 聲明在函數外, 則每次調用, 都會產生不同的值, 但卻是固定的,
\n //換行\r //斷行符號\b //退格\f //換頁\t //水平定位字元\v //垂直定位字元\a //響聲\" //雙引號\' //單引號\x?? //用小寫 x 和兩位元字(十六進位數)表示一個字元\??? //用三位元字(八進位)表示一個字元例1:#include <stdio.h>int main(void){ printf("\"C++Builder\" 2009\n"); printf("\x41&
上一篇中提到了用樹形結構來分析運算式並計算求值的思路。但對程式來說,輸入的運算式只是一個字串而已。要將運算式表示成樹型結 構,首先必須可以將運算式分解成一個個節點,然後才可以由節點群組成樹。這裡將樹上的每一個節點稱之為記號對象TokenRecord。根據上面的分析得出,記號對象要求有一個儲存自身值的變數,有自己特定的計算方法,還要能知道其下級的值。由此可以得出
1.先來介紹它的第一條也是最重要的一條:隱藏。當我們同時編譯多個檔案時,所有未加static首碼的全域變數和函數都具有全域可見度。 為理解這句話,我舉例來說明。我們要同時編譯兩個源檔案,一個是a.c,另一個是 main.c.下面是a.c的內容:char a = 'A'; // global variablevoid msg(){printf("Hello\n");}下面是main.c的內容:int main(void){extern char a; // extern
以任意角度旋轉映像樣本。實現任意角度旋轉映像主要使用Graphics類提供的RotateTransform()方法。代碼如下:private void button1_Click(objectsender,EventArgse){ //以任意角度旋轉顯示映像 Graphics g=this.panel1.CreateGraphics(); float MyAngle=0;//旋轉的角度 while(MyAngle<360) { TextureBrush
C#開發WPF/Silverlight動畫及遊戲系列教程(Game Course):(十八) 完美精靈之八面玲瓏(WPF Only)②緊接著上一節,首先得解釋一下為什麼需要將這272張圖片合成為一張大圖。因為如果遊戲中還有裝備、坐騎等其他設定,那麼我們就需要對圖片源進行時時的合成;同時對272張甚至更多的圖片進行合成效率高還是對2張大圖進行合成效率高這是顯而易見的。在本節例子中,主角由身體(衣服)及武器兩個部分組成;因此,我們還需要定義一個交錯數組來儲存已經載入的角色裝備合成圖到記憶體中:///
教程需求在繼續前,請確保您重新檢查了本節的需求。先決條件本 教程假設您已經有一些使用 IDE 的基本知識和 Java 編程經驗。本教程所需的軟 件在開始前,您需要安裝 NetBeans 6.0。您將同時需要 C/C++ 和 Java SE 支援,所 以最佳選擇是選擇“下載全部”選項並在安裝時排除 Base IDE、Java SE 和 C/C++ 包之外的所有模組。準備項目對本教程,我們需要兩個項目。一個是管 理我們的外掛程式的原始碼的 NetBeans
使用.NET編寫winform程式,比較常見的一種情況就是如何?Form間的資料互動,下面就簡單總結一下常見的幾種資料互動方式:1、修改子表單的建構函式:簡單地說就是通過修改子表單Form的建構函式,如下所示:public Frm_Child(string Para1, ArrayList List1, TextBox textBox1, Form. Frm_Main){InitializeComponent();}上面的例子中,為子表單Frm_Child添加了4個參數,分別是:字串Para1,
/// <summary>/// 使用byte[]資料,產生256色灰階 BMP 位元影像/// </summary>/// <param name="originalImageData"></param>/// <param name="originalWidth"></param>/// <param
本文詳細解釋了如何在C++Builder中使用全域變數。作者:yifei(尹加俊)信箱:yifei1900@163.com如何在C++Builder中使用全域變數?(1).如果我在一個公用的標頭檔中定義一個變數,在其它單元中可以直接使用它嗎?如下: //--------------------------------Globals.h---------------------------------- #ifndef GlobalsH #define GlobalsH //----