2012-10-17 25 views
-1

我最近從我本地的C++庫中租借了一本書,書名是:Joseph Bergin的「用C++標準模板庫進行數據結構編程」。問題是,當我查閱1998年的出版日期時,鑑於今天電腦進步的速度,這是一個非常大的時間框架。這本書會傷害我還是幫助我?以下是我的書中算法的摘錄:過時的數據結構編程書籍的可信度

// THIS IS AN ALGORITHM EXPLAINED AS SELECTION SORT 
template <class T> 
void selectionSort(T* start, T* end)    //first off, i notice an excessive use of pointers, when usually 
{ for(T* where = start ; where < end ; where++) // im told to work around pointers if i dont need to use them 
    { T* loc = where;        //weird bracket formatting(old practice i would guess?) 
     T small = *loc; 
     for           //very strange method of organizing for loops used in the book 
     ( T* inner = where + 1; 
      inner < end; 
      inner++; 
     ) 
      if(*inner < *loc) 
      { loc = inner; 
       small = *loc; 
      } 
     *loc = *where; 
     *where = small; 
    } 
} 

此代碼使用奇怪的方法進行選擇排序。指針可以很容易地用正常值替換,但本書喜歡使用指針,並且使用格式化爲循環。這個代碼從現代C++ 11方法到數組選擇排序有多遠?

*他們還用_前綴聲明瞭所有的變量,這是否對變量做了特殊的處理?聲明瓦爾的例子:

int _Num1; 
float _Select; 
+0

去年發佈了一個新的C++標準,所以標準庫(舊STL的後繼者)現在包含哈希表。當談到基本的數據結構時,計算機的速度可能並不重要;線性搜索仍然太慢:) –

+0

我認爲這本書可以學習基礎知識並更好地理解各種概念。然後你可以得到一本更新的書(也許是提升?)或者使用互聯網或編譯器手冊頁。 –

回答

2

我答應你,被稱爲一個優秀的程序員,從今天的日期看書(甚至之前)的每一個,所以我不認爲它傷害你,因爲它是關於概念和概念永遠不會發生巨大變化,但如果你能找到一本更新的書,它將會非常棒!

+0

我實際上是重讀了一本最初在1968年出版的書。你能猜到它是什麼嗎? –

+0

@JohnDibling,是不是「羅馬的笑聲:普拉圖斯的喜劇」? –

+0

@Robᵩ:沒有。 :)提示:這是一本電腦書。 –

2

你應該得到一本新書,但這並不意味着你目前的書是有害的。

C++語言由一個由國際委員會編寫的標準定義。編譯器在不同程度上實現了這個標準,但它們都或多或少地遵循C++標準。

自1998年以來,沒有一個,而是兩個新標準--2003年(通常稱爲C++ 03)和2011年(C++ 11)。 1998年存在的基本成語今天仍然有用,因此學習這些成語仍然很重要。但是標準圖書館也發生了很大的變化,包括許多人(錯誤地)稱之爲「STL」的標準圖書館的部分內容。 1998年,隨着我們對語言的使用經驗的增長,許多成語已經有所改進,並且在C++ 11中有新的成語可能在1998年是不可能的。

有一個很好的Wikipedia article枚舉C++ 11和C++ 03之間的許多差異,以及1998年C++中的差異更大。

這是我一直在閱讀的一本新書。 The C++ Standard Library: A Tutorial and Reference (2nd Edition)