原创 設計模式 -- 策略模式Strategy

策略模式:定義了算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化,不會影響到使用算法的客戶。 組成: 抽象策略角色Strategy:策略類,定義了所有支持的算法的公共接口 具體策略角色ConcreteStrateg

原创 C++ STL — 第5章 The STL(一)

STL :基於各種結構良好的組件,核心的有:containers、iterators、algorithms container:容器,用來存放和管理某種具體的對象,每種容器都有自己的特點,使用時候按需採用 iterator:迭代器,用來遍

原创 編程之美 -- 中國象棋將帥問題

下過中國象棋的朋友都知道,雙方的“將”和“帥”相隔遙遠,並且它們不能照面。在象棋殘局中,許多高手能利用這一規則走出精妙的殺招。假設棋盤上只有“將”和“帥”二子(爲了下面敘述方便,我們約定用A表示“將”,而B則表示“帥”): A、B

原创 設計模式 -- 簡單工廠模式 SimpleFactory

引入: 類的創建型模式,一個工廠對象決定應該創建哪一種產品類的實例,這樣外界就不用直接創建對象而只要消費對象就可以了,也不必知道這些對象是如何創建如何組織的,這樣就明確了各自的職責和權利。有利於軟件體系結構的優化和重構。 角色以及指責:

原创 C++ STL -- 第1章 關於這本書

About this book: 1. 介紹C++ 和 STL 2. namespace 和 header files 3. 錯誤和異常處理 4. utility實用類 5.  各種組件 STL 容器Container, 迭代器Ite

原创 設計模式 -- 裝飾模式Decorator

裝飾模式: 動態的給一個對象添加額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。 特點: 1. 裝飾對象包含一個真實對象的引用,Decorator有一個Component的引用或者指針 2. 裝飾對象和真實對象擁有相同的接口,這

原创 C++ STL — 第6章 STL容器(一)vector

6.1 容器的共通能力和共通操作   所有容器提供的都是value語意而非reference語意。容器元素必須能夠被拷貝。   總體而言,所有元素形成一個次序。運用迭代器遍歷,也是算法的基礎。     各項操作並非安全,調用者必須確保參數

原创 C++ STL — 第2章 介紹C++和標準庫

語言特性: 1. Templates模板 1 2 3 4 5 template<class T> inline const T& max(const T& a, const T& b

原创 設計模式 -- 工廠方法模式 FactoryMethod

簡單工廠模式違反了高內聚的原則,把所有的產品創建都集中在了一個具體工廠裏面,爲了克服這個缺點,工廠方法模式誕生! 工廠方法模式:定義一個創建對象的接口,讓子類決定實例化哪個類,延遲實例化到子類。是簡單工廠模式的升級版,有效的遵循了開放-

原创 排序 -- 快速排序

快速排序 QuickSort    -- 分治法策略 + 遞歸實現 平均:O(nlogn) 最好:O(nlogn) 最壞:O(n*n) 輔助空間:O(logn) ~ O(n)   穩定性:不穩定 不屬於簡單類型算法,屬於改進的算法 快排像

原创 設計模式 -- 單例模式 Singleton Pattern

單例模式:Singleton Pattern 使用場景: 通過單例模式可以保證系統中一個類只有一個實例而且該實例易於外界訪問,從而方便對實例個數的控制並節約系統資源。如果希望在系統中某個類的對象只能存在一個,單例模式是最好的解決方案

原创 C++ STL — 第3章 基本概念

namespace std:爲了避免標誌符衝突 三種使用方式:     直接使用:std::cout << "hello" << std::endl;     先聲明後使用:         using std::cout;       

原创 編程之美 -- 尋找數組中的最大值和最小值

對於一個由N個整數組成的數組,同時找到最大值和最小值,且需要多少次比較才能着出來? 看起來好像很簡單,簡單一遍循環可以搞掂,但是效率呢? 下面是書上給出的三種方法,我用C++實現了下。。。 參數:數組,數組起始下標,數組末尾元素下標 返回

原创 C++ STL — 第4章 Utilities

Pairs:  #include <utility> std::pair是一個未封裝類:struct class 兩個成員:first   second 一個函數:make_pair(const T1&, const T2&) 默認的構造

原创 算法學習 - 02 查找算法總結

查找,應該是最常用的算法之一了吧,當然還有排序,其實,查找是建立在排序基礎上的,除了那個最笨的順序查找。。。 1. 好吧,首先來個最簡單的順序查找,原理很簡單,順序比較每個元素,直到找到關鍵字爲止 上代碼咯。。。 //順序查找:返回待