《深入應用C++11:代碼優化與工程級應用》勘誤表

《深入應用C++11:代碼優化與工程級應用》勘誤表,會不斷更新,歡迎讀者留言或發郵件([email protected])給我提出寶貴意見。

1.第7.3節目錄final和override關鍵字應該改爲標識符;

這個問題由園友“李奧霍克”和“Cu2S”指出, 在此表示感謝。

2.page 156, 倒數第三行代碼newint應該爲new int

3.page 177,倒數第三行語句unique_lock多寫了一個,應該去掉一個。

上面這兩個問題是讀者玄龠指出的,在此表示感謝。

4.page 4, 倒數第9,10行註釋中的變量名e和f應該改爲g和h

上面這個問題由讀者zeno指出的,在此表示感謝。

5.page 406, 多寫了一個AsyncSend函數。

這個問題由讀者YZB_007指出,在此表示感謝。

6.page 28, 倒數第二行“而對於非集合類型,則需要先自定義一個合適的構造函數”中的“非集合類型”應該改爲“非聚合類型”。

這個問題由讀者jingyigang指出的,在此表示感謝。

 7. page 63, 第二行“第2章”應該改爲“第3章”。page 155, 倒數第5行"std::uniq_ptr"應該改爲“std::unique_ptr“。158頁,第三行代碼"return stared_ptr<S>(this);"類型S應該是A。

這三個問題由讀者YZB_007指出的,在此表示感謝。

8.page74,倒數第二和第三行"_len"和"_data"應該爲"m_len"和"m_data"。page 173,代碼清單5-2中,both函數寫到Complex類的外面了,應該放裏面。

這兩個問題由讀者“勇者之驍”指出,在此表示感謝。

9. page212,第二行,應該是"否則返回false."

 這個問題由讀者YZB_007指出的,在此表示感謝。

10. page260, foo函數裏,根據結果運行圖10-3和編譯調試,foo的輸出應該爲:
cout << "real foo function:" << a << endl; 而不是書中寫到是real HT function

這個問題由讀者YZB_007指出,在此表示感謝。

11. page337, 第三行缺少一個"]"符號;page359, TestLinqCpp()裏變量vct應該爲v,min和max應該改爲Min和Max。page355, 第二行"decltype(begin())"應該改爲"decltype(boost::make_iterator_range(std::find_if_not(begin(), end(), f), end()))"

page352, 兩個count函數應該改爲:

複製代碼
auto count() const -> decltype(std::distance(begin(), end()))
{
    return std::distance(begin(), end());
}

template<typename F>
auto count(const F& f) const -> decltype(std::count_if(begin(), end(), f))
{
    return std::count_if(begin(), end(), f);
}
複製代碼

這幾個問題由讀者YZB_007指出,在此表示感謝。

 12. page16, 第二行 "c++" 應爲 "c++98/03"; page21, 第一段代碼返回處爲 "ret val" ,應爲 "val;"; page61, 最後一行 "tuple<constchar*, int>tp" 應爲 "tuple<const char *, int> tp"

13.page62, 代碼段"auto tp = return std::tie(1, "aa", 2);"語法錯誤,要去掉return,tie不能綁定右值,應該改爲:

int x = 1;
int y = 2;
string s = "aa";
auto tp = return std::tie(x, s, y);

接下來一段代碼中"constchar*" 應爲 "const char *","tp.get"應該改爲“std::get”

14.page62, 介紹forward_as_tuple的用法寫錯了,應該改爲:

std::map<int, std::string> m;
 
m.emplace(std::piecewise_construct,
              std::forward_as_tuple(10),
              std::forward_as_tuple(20, 'a'));

上面這幾個問題由讀者mogu指出,在此表示感謝。

 15. page68, 代碼"int&& var1 = x;  //var1"應該改爲"int&& var1 = 1;  //var1", 這個問題由讀者YZB_OO7指出,在此表示感謝。

16. page85, 第7行 "需要提供函數和比較函數" 應爲 "需要提供Hash函數和比較函數"。page89,  "struct is_union;" 的解釋錯誤,應該是 "判斷T是否爲union類型"。page90 最後的兩行中 "unsignedint" 與 "signedint"缺少空格,應爲 "unsigned int" 與 "signed int"。

17.page93,第二行decay的描述不太準確,應該是移除引用和cv,函數或數組退化爲指針。page99第二段和第三段代碼中的很多空格被被吃掉了。page101,"returnt"應該改爲"return t"。page107,109, "structSum"應該爲"struct Sum";page108,第二段代碼中 "sizeof (First);" 應該爲 "sizeof(Last);"。

18.page110,第二行 "MakeIndexes<1,2,3>::type" 應該爲 "MakeIndexes<3>::type"; page121, 註釋 "不帶參數的 lamda" 應該爲 "不帶參數的 lambda", 下一行的 "return12" 應爲 "return 12"

19. page122, 最後一段代碼的錯誤:pMax, pGet 後文寫成了 PMax PMin, hMode 後文寫做 hDLL; page124, 函數名“ExcecuteFunc”應該爲"ExecuteFunc"。page113, 最下面的Instance函數中缺少了模板參數T。

上面的這些問題由讀者mogu指出,在此表示感謝。

20.page126,  第一段代碼中的 "return0;" 應爲 "return 0;", page127, Then的實現中"[func, &f]"應改爲"[func, f]", page129, 第8行"emplate"應該爲"template", page136, 第8行"it->first"應該爲"v", 最後三行中Integer Max應該爲IntegerMax;

page137, 第4行MaxType應該爲IntegerMax; page141, 3.3.9 上面的一段是屬於3.3.2lazy的那一節,不應該在這裏。

上面的這些問題由讀者mogu指出,在此表示感謝。

 21.page21, 關於模板參數的順序搞錯了,現更正如下:

但需要注意的是,在調用函數模板時,若顯示指定模板的參數,由於參數填充順序是從左往右的,因此,像下面這樣調用:
func<long>(123); // func的返回值類型是long
函數模板func的返回值類型是long,而不是int,因爲模板參數的填充順序從左往右,所以指定的模板參數類型long會作爲func的返回值類型而不是參數類型,最終func的返回類型爲long。

這個問題由讀者evenstar,mogu等網友指出,在此表示感謝!

22.296頁中的測試結果.

輸出結果的第四行與第五行順序反了.
23.133頁的那個測試函數下:
PrintType<function_traits<std::function<int(int)>>::args<0>>();  //這句有問題,在args<0>後面少了type
應該改爲:
PrintType<function_traits<std::function<int(int)>>::args<0>::type>();

 24.

69頁:
將輸出如下結果:
...
rvalue : 1
lvaue : 2  此處應該爲 lvalue : 2
 由讀者Eric和 RonTang指出,在此表示感謝。
80頁:
 FuncWrapper(test0) ;   // 沒有返回值, 打印 1        此處應該是打印void
158頁
    shred_ptr<A>GetSelf()
    {
        return shared_ptr<S>(this);       此處S應爲A
    }
    int main() 
    {
        return0;     此處應爲 return 0;
    }

165頁
#define GUARD(P) xxx       此處P應當爲小寫p
 
212頁
auto isEven = [](int i){ return i%2 != 0; }     此處掉了}
由讀者Eric指出,在此表示感謝。

也歡迎更多的讀者來指出問題和提出寶貴意見。

一點夢想:儘自己一份力,讓c++的世界變得更美好!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章