原创 泛型算法: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