原创 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()