原创 泛型算法:Tips (1) --- bind 基礎

從 STL 出現到現在已經這麼多年了,泛型算法是它的重要組成,也是其中最“看起來很美”的東西之一。然而在真實的程序設計中,它往往成爲程序員的心頭一痛,

原创 泛型算法:Tips (4) --- 再論初始化

總有一些時候,我們不能夠藉助於“生成式”的初始化方法來給容器賦值,例如我們已經有了一個數組,要把它作爲初值賦給一個容器,常規的做法已經深入人心了: 

原创 8月11日的 Boost 1.33,bind 庫存在的問題

問題的起因很簡單,我實驗一個簡單的程序不過。這個程序的本意是想檢驗一下 boost.bind 在 1.33 中新加入的比較運算符,我以爲這一點也不難,

原创 What you can do is more important than who your parents are.

在 Kelvin Henney 的 More C++ Threading 裏面看到這句話,發覺它可以作爲 GP vs. OO 的絕佳註腳。

原创 關於 Boost.Lambda

Boost.Lambda 的確是一個好東西,用來舉例最多的恐怕就是這個了:using namespace boost::lambda;std::vec

原创 boost.bind 如何 bind continue.1

我們先定義目標:1. simple_bind 提供與 bind 類似的界面,可以只考慮通過對象引用(或者值)調用成員函數的情況,而不考慮 free function 或者通過指針調用等等。具體地說,就是允許

原创 boost.bind 如何 bind

Boost.bind好用麼?當然好用,而且它也確定進入下一代的 C++ 標準了,也早就進了 TR1 了。回顧一下,它允許我們幹這個:#include #include #include #include #

原创 Debug 命令詳解

Debug  啓動 Debug,它是可用於測試和調試 MS-DOS 可執行文件的程序。  Debug [[drive:][path] filename [parameters]]  參數  [drive:]

原创 簡單常識——關於 STL 算法

distance很多時候我們希望在一個 vector ,或者 list ,或者什麼其他東西里面,找到一個值在哪個位置,這個時候 find 幫不上忙,而有人就轉而求助手寫循環了,而且是原始的手寫循環:for

原创 C++ Template Metaprogramming 第九章試譯: Crossing the Compile-Time/Runtime Boundary (1)

(看過了這麼多編譯期算法之後)還記得運行時吧?我們已經在編譯期的天空飛行了好久,現在是時候腳踏實地了。一個有趣的程序終究還是要在運行時乾點什麼的。本章就是關於怎樣穿越C++編譯期和運行時的邊界——這一層“臭

原创 脫穎而出

轉眼也在跨國公司工作了兩年了,工作的確是一件讓人成長的事情。在學生時代對很多做人處事的道理的可以津津樂道、侃侃而談,但是知道工作了一段時間,那些道理才真正的昇華成了準則,或者......教訓。剛纔在讀傑克·

原创 remove_all_pointer

boost 提供了 remove_pointer ,不過不夠,有的時候我們需要拿掉一個“指向指針的指針……的指針”類型上面所有的“指針”前綴,所以下面這個 remove_all_pointer 就有用了,當

原创 Expression Template

如果在 C++ 裏面評選稱得上是“魔法”的技術,Expression Template (ET,酷吧?) 當之無愧要成爲其中一員。如果要求兩個數組的內積,該怎麼做?    int a[4] = {1,100

原创 智能指針的另外用途:optional value 手法

有些時候我們希望一個類成員除了自己的值以外,還能有一個“未被初始化”的狀態,例如在一個 Server 裏面,我們需要管理 user 數量:class Server{//...    int userCoun

原创 模板元編程 --- 用 MPL 解決實際問題

在 STL 中有各種容器,而 STL 算法允許我們對容器中的元素做各種操作,下面的程序對於每一個當代的 C++ 程序員都應該是輕而易舉的:#include #include #include #includ