原创 STL容器比較
STL的容器可以分爲以下幾個大類: 一:序列容器, 有vector, list, deque, string. 二 : 關聯容器, 有set, multiset, map, mulmap, hash_set, hash_map,
原创 map和set異同
節選一: MAP的節點是一對數據. SET的節點是一個數據.Map使用關鍵值Key來唯一標識每一個成員 map可以重複。set是集合 都屬於關聯容器 只不過
原创 C 語言的謎題
1、下面的程序並不見得會輸出 hello-std-out,你知道爲什麼嗎? #include#includeint main(){while(1){fprintf(stdout,"hello-std-out");fprintf(stder
原创 C++中Static作用和使用方法-zz
1、什麼是static? static 是C++中很常用的修飾符,它被用來控制變量的存儲方式和可見性。 2、爲什麼要引入static? 函數內部定義的變量,在程序執行到它的定義處時,編譯器爲它在棧上分配空間
原创 typedef和#define的用法與區別
typedef和#define的用法與區別 一、typedef的用法 在C/C++語言中,typedef常用來定義一個標識符及關鍵字的別名,它是語言編譯過程的一部分,但它並不實際分配內存空間,實例像: typedef int
原创 引用和指針
(1)引用總是指向一個對象,沒有所謂的 null reference .所有當有可能指向一個對象也由可能不指向對象則必須使用 指針. 由於C++ 要求 reference 總是指向一個對象所以 reference要求有初值. Stri
原创 堆、棧、自由存儲區、全局/靜態存儲區和常量存儲區-zz
在C++中,內存分成5個區,他們分別是堆、棧、自由存儲區、全局/靜態存儲區和常量存儲區。 棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變量的存儲區。裏面的變量通常是局部變量、函數參數等。 堆,就是那些由new分配的內存塊
原创 回調函數
簡介 對於很多初學者來說,往往覺得回調函數很神祕,很想知道回調函數的工作原理。本文將要解釋什麼是回調函數、它們有什麼好處、爲什麼要使用它們等等問題,在開始之前,假設你已經熟知了函數指針。 什麼是回調函數? 簡而言之,回調函數就是一
原创 對象賦值測試
最近對對象賦值做了小測試 #include "stdafx.h" #include <iostream> using namespace std; class A { public: int a1;
原创 explicit關鍵字
c++中的explicit關鍵字用來修飾類的構造函數,表明該構造函數是顯式的,既然有"顯式"那麼必然就有"隱式",那麼什麼是顯示而什麼又是隱式的呢?如果c++類的構造函數有一個參數,那麼在編譯的時候就會有一個缺省的轉換操作:將該構造函數對
原创 排序學習總結(待續)
首先來說說排序的分類。 1. 插入排序---直接插入排序、折半插入排序、希爾排序; 2. 交換排序---冒泡排序、快速排序; 3. 選擇排序---直接選擇排序、堆排序; 3. 歸併排序; 4
原创 函數中分配內存的問題-zz
如果想要在在C++的函數中分配內存,那麼就只得使用指針的引用傳遞,或是二級指針。 void MyNew(int** p){ *p = new int;} void MyNew(int*& p){ p = new int;}
原创 c++虛函數表探究-zz
C++中的虛函數的作用主要是實現了多態的機制。關於多態,簡而言之就是用父類型別的指針指向其子類的實例,然後通過父類的指針調用實際子類的成員函數。這種技術可以讓父類的指針有“多種形態”,這是一種泛型技術。所謂泛型技術,說白了就是試圖使用不變
原创 new/delete和malloc/free的區別-zz
1、new 是c++中的操作符,malloc是c 中的一個函數 2、new 不止是分配內存,而且會調用類的構造函數,同理delete會調用類的析構函數,而malloc則只分配內存,不會進行初始化類成員的工作,同樣free也不會調用析構函數
原创 構造函數和變量初始化順序
class A{ public: A(){ cout<<"A()"<<endl;} ~A(){ cout<<"~A()"<<endl;} }; class B { public: B(){ cout<<"B()