原创 C++右值引用

    右值引用是C++11標準引入的一個技術。    與左值引用類似,右值引用的是右值,包括常量、臨時值等不可作爲左值的值,使用&&表示右值引用,如:type &&t = value1+value2;,在標準庫的頭文件<uility>有s

原创 C++ 隨機數

    由隨機數分佈類、隨機數引擎類組成。    現在介紹生成整數與浮點數的隨機數。    頭文件<random>,使用的隨機數引擎類是std::default_random_engine,可通過()調用運算符返回隨機數,簡單的例子:// 

原创 多進程與多線程的選擇

這類我總結了一些進程與線程的特點和選取方法,若有錯誤,不吝指正(^.^)進程是資源分配的最小單位,線程是CPU調度的最小單位(基本概念啦)數據同步與共享:(平分秋色)進程共享複雜需要IPC,數據分開同步簡單;線程共享進程數據,共享簡單,但因

原创 C++ lambda表達式

    C++11新標準引入lambda表達式,主要部分如下:    [捕獲列表](參數)->type{函數體},使用尾置返回類型,其中可以忽略參數與返回類型,但要保存捕獲列表與函數體,使用調用運算符調用,可在(參數)後添加mutable限

原创 單源最短路徑

以下爲找到一條單源最短路徑的思想與思路描述自己最近看了一下關於單源最短路徑的算法,其基礎是DijKstra算法:從某個起點開始,選擇直接連接的最短路徑點,更新最短路徑長並逐漸擴到終點。如圖所示的路徑:(手工畫圖,若醜勿怪)起點爲1,尋找到終

原创 C++ stl庫bind函數模板用法的注意事項

類成員函數 bind可以包裝類成員函數,創建函數對象。其中有接收類類型和類指針類型的版本,如: #include <iostream> #include <memory> #include <functional> using namesp

原创 操作系統精髓與設計原理--虛擬內存

概述        爲了更高效的利用處理器和IO設備,需要在內存中運行更多的進程;同時使程序開發時不受內存大小的影響,而解決這兩個問題的方法是使用虛擬內存技術。        通過虛擬內存技術,將本要分配在實內存的進程,可以部分分配到磁盤上

原创 讓類成員函數指針成爲可調用對象

    類成員函數指針實踐上是一個指針類型,不可直接通過調用運算符()作爲可調用對象調用,一般調用該類成員函數指針需要指定該指針對應的對象。    一般情況下調用類成員函數指針:// a.h #ifndef A_H #define A_H

原创 C++右值引用

    右值引用是C++11標準引入的一個技術。    與左值引用類似,右值引用的是右值,包括常量、臨時值等不可作爲左值的值,使用&&表示右值引用,如:type &&t = value1+value2;,在標準庫的頭文件<uility>有s

原创 C++使用可變參數

    今天要說的是C++使用可變參數的方式,包括std::initializer_list<T>模板類、可變參數模板。    std::initializer_list<T>(<initializer_list>)    是C++11新標

原创 C++ bind函數適配器

    在我之前的博客讓類成員函數指針成爲可調用對象裏有提到bind函數適配器,現在在這裏介紹一下。    適配器可以讓某一個看上去像另一個行爲,比如棧、隊列等,底層使用鏈表去完成功能,我們通過操作底層鏈表去實現棧、隊列等的行爲。bind是

原创 C++ 隨機數

    由隨機數分佈類、隨機數引擎類組成。    現在介紹生成整數與浮點數的隨機數。    頭文件<random>,使用的隨機數引擎類是std::default_random_engine,可通過()調用運算符返回隨機數,簡單的例子:// 

原创 操作系統精髓與設計原理--IO管理和磁盤調度

前言IO體系結構是計算機系統和外部的接口,同時也是操作系統中設計最難的部分,因爲存在許多不同的設備和它們的應用,難有統一一致的解決方案。 IO體系結構的設計目標是提供一種系統化方法來控制與外部的交互,並且給操作系統提供有效管理IO所需的信息

原创 set、vector與list的構造與排序的耗時測試

測試目標測試在成員個數不斷遞增的情況下,set、vector與list的構造與排序的耗時變化,找出set耗時連續超過其他容器耗時的成員個數測試方式set使用直接插入vector使用assign構造並使用全局sort排序list使用assig

原创 測試vector、list、set調用empty和size的耗時是否爲常數

      在閱讀代碼時,發現有使用size()==0判斷是否容器爲空的,而從<<Effective STL>>上看到size()不能保證常數時間,建議使用empty()替換。因此我做了一個實驗,發現size()並不能保證常數時間,但emp