Time of Update: 2017-01-19
寫在最前方源路徑:即 From-Path,你準備要備份的資料目的路徑: 即 To-Path,你準備要儲存備份的資料的地方稍微回想一下,上一次寫的代碼,本次的任務是遍曆目錄及其子目錄,那麼這回要乾的就是將上次遍曆過的資料,挪一下窩,到我們想要他們去的位置。這涉及到兩個操作,遍曆 和 拷貝,前一個動作我們在上一回已經實現了,只需做小小的改動,就能夠使用。後一個動作也是需要靠 Windows API來完成,至於哪些,稍後再提。現在先讓我們完成一個魔法,3, 2, 1!: do{ puts("---
Time of Update: 2017-01-19
寫一個定時關機的小程式,可以立即關閉電腦,也可以一段時間後關閉電腦。這裡主要考察system()命令。代碼實現:#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){ char cmd[20]="shutdown -s -t "; char t[5]="0"; int c; system("title C語言關機程式"); //設定cmd視窗標題 system("mode
Time of Update: 2017-01-19
原型模式的意圖是用原型執行個體指定建立對象的種類,並且通過拷貝這些原型建立新的對象。適用性 當要執行個體化的類是在運行時刻指定時,例如,通過動態裝載;或者為了避免建立一個與產品類層次平行的工廠類層次時;或者當一個類的執行個體只能有幾個不同狀態組合中的一種時。建立相應數目的原型並複製它們可能比每次用合適的狀態手工執行個體化該類更方便一些。關於這個模式,突然想到了小時候看的《西遊記》,齊天大聖孫悟空再發飆的時候可以通過自己頭上的 3
Time of Update: 2017-01-19
代理模式典型的結構圖為:實際上,代理模式的想法非常簡單。代理模式的實現:完整程式碼範例(code):代理模式的實現很簡單,這裡為了方便初學者的學習和參考,將給出完整的實現代碼(所有代碼採用 C++實現,並在 VC 6.0 下測試回合)。代碼片斷 1:Proxy.h//Proxy.h#ifndef _PROXY_H_#define _PROXY_H_class Subject{ public: virtual ~Subject(); virtual void Request() = 0;
Time of Update: 2017-01-19
由遇到的問題引出代理模式至少在以下集中情況下可以用代理模式解決問題: 建立開銷大的對象時候,比如顯示一幅大的圖片,我們將這個建立的過程交給代理去完成,GoF 稱之為虛代理(Virtual Proxy); 為網路上的對象建立一個局部的本地代理,比如要操作一個網路上的一個對象(網路效能不好的時候,問題尤其突出),我們將這個操縱的過程交給一個代理去完成,GoF 稱之為遠程代理(Remote Proxy); 對對象進行控制訪問的時候,比如在 Jive
Time of Update: 2017-01-19
Time of Update: 2017-01-19
策略模式也是一種非常常用的設計模式,而且也不複雜。下面我們就來看看這種模式。定義:策略模式定義了一系列的演算法,並將每一個演算法封裝起來,而且使它們還可以相互替換。策略模式讓演算法獨立於使用它的客戶而獨立變化。角色: 抽象策略角色(Strategy): 抽象策略類。 具體策略角色(ConcreteStrategy):封裝了繼續相關的演算法和行為。
Time of Update: 2017-01-19
由遇到的問題引出的裝飾模式在 OO 設計和開發過程,可能會經常遇到以下的情況:我們需要為一個已經定義好的類添加新的職責(操作),通常的情況我們會給定義一個新類繼承自訂好的類,這樣會帶來一個問題(將在本模式的討論中給出)。通過繼承的方式解決這樣的情況還帶來了系統的複雜性,因為繼承的深度會變得很深。而裝飾提供了一種給類增加職責的方法,不是通過繼承實現的,而是通過組合。有關這些內容在討論中進一步闡述。模式選擇裝飾模式典型的結構圖為:在 結 構 圖 中 , ConcreteComponent 和裝飾需
Time of Update: 2017-01-19
策略模式(Strategy):它定義了一系列的演算法,並將每一個演算法封裝起來,而且使它們還可以相互替換。策略模式讓演算法的變化不會影響到使用演算法的客戶。策略模式和 Template 模式要解決的問題是相同(類似)的,都是為了給商務邏輯(演算法)具體實現和抽象介面之間的解耦。策略模式將邏輯(演算法)封裝到一個類(Context)裡面,通過組合的方式將具體演算法的實現在組合對象中實現,再通過委託的方式將抽象介面的實現委託給組合對象實現。State
Time of Update: 2017-01-19
建造者模式:將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。這是建造者模式的標準表達,不過看著讓人迷惑,什麼叫構建和表示的分離?一個對象使用建構函式構造之後不就固定了,只有通過它方法來改變它的屬性嗎?而且還要同樣的構建過程搞出不同的表示,怎麼可能呢?多寫幾個建構函式?其實多寫幾個建構函式,根據不同參數設定對象不同的屬性,也可以達到這樣的效果,只是這樣就非常麻煩了,每次要增加一種表示就要添加一個建構函式,將來建構函式會多得連自己都不記得了,這違背了開放-封閉的原則。要不就
Time of Update: 2017-01-19
題目描述:一個正整數有可能可以被表示為 n(>=2) 個連續正整數之和,如:15=1+2+3+4+5 15=4+5+6
Time of Update: 2017-01-19
在看C++編程思想中,每個練習基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含義,在看了幾位大牛的博文後,進行整理和總結:這裡主要是討論fstream的內容:#include <fstream> ofstream //檔案寫操作 記憶體寫入存放裝置 ifstream //檔案讀操作,存放裝置讀區到記憶體中 fstream //讀寫操作,對開啟的檔案可進行讀寫操作
Time of Update: 2017-01-19
概述:最近中國股市起起伏伏,當然了起伏就用商機,小明發現商機後果斷想入市,買入了中國證券,他想在電腦用戶端上,網頁上,手機上,iPad上都可以查看到該證券的即時行情,這種情況下我們應該怎麼設計我們的軟體呢?我們可以這樣:小明的所有用戶端上都訂閱中國證券這個股票,只要股票一有變化,所有的用戶端都會被通知到並且被自動更新。這就是我們的觀察者模式,她定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,
Time of Update: 2017-01-19
Factory 方法模式不同於簡單原廠模式的地方在於Factory 方法模式把對象的建立過程放到裡子類裡。這樣工廠父物件和產品父物件一樣,可以是抽象類別或者介面,只定義相應的規範或操作,不涉及具體的建立或實現細節。其類圖如下:執行個體代碼為:#pragma once class IProduct { public: IProduct(void); virtual ~IProduct(void); }; #pragma once #include "iproduct.h" class
Time of Update: 2017-01-19
簡單原廠模式中專門定義一個類來負責建立其他類的執行個體,被建立的執行個體通常都具有共同的父類。它又稱為靜態Factory
Time of Update: 2017-01-19
1. 第一版本程式int fib(int pos) { int elem = 1; int n1 = 1, n2 = 1; for (int i = 3; i <= pos; i++) { elem = n2 + n1; n1 = n2; n2 = elem; } return elem; }2. 第二版本bool fib(int pos, int &elem) { if(pos < 0 || pos
Time of Update: 2017-01-19
選擇排序選擇排序是一種簡單直觀的排序演算法,其核心思想是:遍曆數組,從未排序的序列中找到最小元素,將其放到已排序序列的末尾。時間複雜度:O(n^2)穩定性 :不穩定 /* * @brief selection sort */ void selection_sort(int a[], int n) { int i, j, min, tmp; for (i = 0; i < n - 1; ++i) { min = i; for (j = i+1; j <
Time of Update: 2017-01-19
虛函數①#include "stdafx.h"#include <iostream>using namespace std;class B0//基類B0聲明{public: void display(){cout<<"B0::display()"<<endl;}//公有成員函數};class B1: public B0//公有衍生類別B1聲明{public: void
Time of Update: 2017-01-19
資料結構演算法複雜度1、影響演算法效率的主要因素(1)演算法採用的策略和方法;(2)問題的輸入規模;(3)編譯器所產生的代碼;(4)電腦執行速度。2、時間複雜度// 時間複雜度:2n + 5 long sum1(int n) { long ret = 0; \\1 int* array = (int*)malloc(n * sizeof(int)); \\1 int i = 0; \\1 for(i=0; i<n; i++) \\n { array[i]
Time of Update: 2017-01-19
無論是模組化設計,還是物件導向設計,還是分層設計,實現子系統內部資訊的對外隱藏都是最關鍵的內在要求。以本人淺顯的經驗,把資訊隱藏按照程度的不同分成(1)不可見不可用(2)可見不可用(3)可見可用。1 不可見不可用就是說模組內部的變數、結構體、類定義對外部而已完全隱藏,外部對此一無所知。常用的實現方法就是利用不透明指標,請參見我的博文C語言開發函數庫時利用不透明指標對外隱藏結構體細節。這種方法同樣適用於C++語言,一種可能的實現方式為面向介面編程。標頭檔 IMyClass.hclass