Time of Update: 2018-12-03
主要參考《Numerical Recipes in C++ 2/e》p.292~p.294 和《Simulation Modeling and Analysis 3/e》p.465~p.466。Box 和 Muller 在 1958 年給出了由均勻分布的隨機變數產生常態分佈的隨機變數的演算法。設 U1, U2 是區間 (0, 1) 上均勻分布的隨機變數,且相互獨立。令X1 = sqrt(-2*log(U1)) * cos(2*PI*U2);X2 = sqrt(-2*log(U1)) * sin(
Time of Update: 2018-12-03
windows平台上編譯64位程式變數類型大小變化:類型 用32位編譯的大小 用64位編譯的大小char 1 1short 2 2int 4 4long 4
Time of Update: 2018-12-03
有時候我們在寫伺服器端的程式的時候,經常需要用到日誌,這幾天在做些事情的時候,發現居然還沒有我自己經常使用的一個日誌類,正好現在又找到一個非常不錯的日誌類,所以把他記錄下來,留待以後直接拿來用就可以了:Log.h////////////////////////////////////////////////////////////////////////#if !defined(__TEST_LOG__INCLUDED_)#define __TEST_LOG__INCLUDED_#if
Time of Update: 2018-12-03
Item 45: 用 member function templates(成員函數模板) 接受 "all compatible types"(“所有相容類型”)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/smart pointers(智能指標)是行為很像指標但是增加了指標沒有提供的功能的 objects。例如,Item 13 闡述了標準 auto_ptr 和 tr1::
Time of Update: 2018-12-03
Chapter 2. Constructors(建構函式),Destructors(解構函式)與 Assignment Operators(賦值運算子)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/幾乎每一個你自己寫的 class(類)都會有一個或多個 constructors(建構函式),一個 destructor(解構函式)和一個 copy assignment
Time of Update: 2018-12-03
集12個main為一身的C程式竟然也能運行,而且可移植性為100% 作者:張桂權 這樣的程式竟然也能運行,不是一個工程只能包含一個main嗎? 沒想到吧 ! 什麼事情都有可能發生,而且這樣的事情還多著呢? 如果你只是被它的結構迷惑,那沒關係,不過…… 程式的運行結果可能會讓你更加吃驚了…… 結果是什嗎?編譯運行一下你就知道了。 這不得不讓我想起“The Tao of Programming”中的一句話“編程大師的程式再淩亂,也用不著測試,因為它是正確的”。
Time of Update: 2018-12-03
再談C語言中數組和指標之間的互操作 作者: 張桂權
Time of Update: 2018-12-03
(翻譯的太差了)一、文法細節C++不允許修改內建類型的臨時變數預設參數根據靜態類型獲得重載的new和delete操作符永遠都是靜態,不管你聲明static沒有二、慣用法選擇前置遞增,只有打算使用初始值時才使用後置遞增,並且使用前置遞增來實現後置遞增注意由隱式轉換建立的隱藏臨時對象;避免這個問題的好辦法,是使用explicit建構函式,避免編寫轉換操作符永遠不要#include不必要的標頭檔;當前置聲明足夠時,永遠不要#include標頭檔明智的使用名稱空間:如果將一個類放入一個名字空間內,那麼一
Time of Update: 2018-12-03
Item 4: 確保 objects(對象)在使用前被初始化作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/C++ 看上去在對象的值的初始化方面變化莫測。例如,如果你這樣做,int x;在某些情形下,x 會被初始化(為 0),但是在其它情形下,也可能沒有。如果你這樣做,class Point { int x, y;};...Point p;p 的 data
Time of Update: 2018-12-03
期待C++的ABI轉型(cast)其實是一種編譯器指令,大部分情況下它並不改變一個指標所含的真正地址,它隻影響“被指出之記憶體的大小和其內容”的解釋方式;那麼,什麼情況下轉型會導致指標的值發生變化呢?多重繼承時轉向不同基類?Global Objects的記憶體保證會在程式啟用的時候被清0;Local Objects配置於棧中,heap
Time of Update: 2018-12-03
The Ten Commandments for C Programmers(Annotated Edition)by Henry Spencer1Thou shalt run lint frequently and study its pronouncements with care, for verily its perception and judgement oft exceed thine.This is still wise counsel, although many
Time of Update: 2018-12-03
Item 1: 將 C++ 視為 federation of languages(語言聯合體)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/最初,C++ 僅僅是在 C 的基礎上附加了一些 object-oriented(物件導向)的特性。C++ 最初的名稱—— "C with Classes" 就非常直觀地表現了這一點。作為一個語言的成熟過程,C++
Time of Update: 2018-12-03
Item 13: 使用 objects(對象)管理資源作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/假設我們和一個類比投資(例如,股票,債券等)的庫一起工作,各種各樣的投資形式從一個 root class(根類)Investment 繼承出來:class Investment { ... }; // root class of hierarchy
Time of Update: 2018-12-03
&&是邏輯運算子,&是位元運算符&和|可以進行邏輯運算也可進行位元運算,&&,|| 兩邊只能是bool類型&,| 兩邊可以是bool類型或者是數實值型別區別:if (A && B) 如果 A 為 false ,整個運算式就為 false,不再計算 B 的值了。if (A & B) 如果 A 為 false ,整個運算式就為 false,但還要計算 B 的值。if (A && B++) 如果A
Time of Update: 2018-12-03
目錄結構記憶體池簡介 介紹分析記憶體池改進及所使用技術 如何配合STL容器 效能測試 如何使用 記憶體池簡介:關於記憶體池的介紹,好文很多(這裡,這裡,這裡,還有這裡…)。在如今的PC機器上,記憶體池的作用也沒有那麼明顯了,作業系統對記憶體的管理已經相當不錯。但,為什麼還需要記憶體池呢?兩點:1. 減少記憶體管理負擔,提升效能。(比如,在進行密集型演算法前申請足夠記憶體記憶體,然後使用,最後統一釋放) 2.減少分頁錯誤(分頁錯誤是由虛擬記憶體與實體記憶體交換導致的),減少記憶體片段,提高效能。
Time of Update: 2018-12-03
簡介:什麼是序列化?簡單來說,序列化就是將對象執行個體的狀態轉換為可保持或傳輸的格式的過程。與序列化相對的是還原序列化,它根據流重構對象。這兩個過程結合起來,可以輕鬆地儲存和傳輸資料。對象序列化還原序列化通常用於:1. 將Object Storage Service於硬碟上2.
Time of Update: 2018-12-03
接下來是第六章的一道習題,要求實現一個binary_tree_inserter,以使用mpl::copy演算法從其它序列產生一棵二分尋找樹(Binary Search Tree,即滿足以下條件的一種二分樹:左子樹所有元素小於根,右子樹所有元素大於根,且左右子樹全都是二分尋找樹)。習題中給出的測試代碼如下:typedef mpl::copy< mpl::vector_c<int,17,25,10,2,11> , binary_tree_inserter<
Time of Update: 2018-12-03
Item 52: 如果編寫了 placement new,就要編寫 placement delete作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/在 C++ 動物園中,placement new 和 placement delete 並不是最常遇到的野獸,所以如果你和它們不熟也不必擔心。作為替代,回想一下 Items 16 和 17,當你寫下一個這樣的 new
Time of Update: 2018-12-03
調用(calling)機制從彙編時代起已經大量使用:準備一段現成的代碼,調用者可以隨時跳轉至此段代碼的起始地址,執行完後再返回跳轉時的後續地址。 CPU為此準備了現成的調用指令,調用時可以壓棧保護現場,調用結束後從堆棧中彈出現場地址,以便自動返回。借堆棧保護現場真是一項絕妙的發明,它使調用者和被調者可以互不相識,於是才有了後來的函數和構件,使吾輩編程者如此輕鬆愉快。若評選對人類影響最大之發明,在火與車輪之後,筆者當推壓棧調用。
Time of Update: 2018-12-03
位元運算 位元運算的運算分量只能是整型或字元型資料,位元運算把運算對象看作是由二進位組成的位串資訊,按位完成指定的運算,得到位串資訊的結果。位元運算符有: &(按位與)、|(按位或)、^(按位異或)、~ (按位取反)。 其中,按位取反運算子是單目運算子,其餘均為雙目運算子。 位元運算符的優先順序從高到低,依次為~、&、^、|, 其中~的結合方向自右至左,且優先順序高於算術運算子,其餘運算子的結合方向都是自左至右,且優先順序低於關係運算子。 (1)