隨著學習的增多,以及對相關的資料結構和演算法的實現,發現很多簡單的資料結構和輸入輸出程式最好是使用自己的版本。比如每次使用下面的代碼肯定是不可避免的
for(list::iterator i=li.begin();i!=li.end();i++)
cout<<*i<<" ";
cout<<endl;
上面的代碼是不是很麻煩呢?你是否想過這樣使用自己的測試代碼呢?
list_ li;
li.print_list();
那就自己寫一些簡單的io,list庫存放起來吧,每次都使用自己的,既熟悉又方便。
當然,自己的代碼只有管理妥當了才會使用方便。這裡主要包括:標頭檔的命名、標頭檔目錄的放置、檔案內部類的設計等。
第一,標頭檔的放置:你可能希望有一個自己的math.h,然後在項目中使用#include"math.h"或者#include<math.h>,但是糟糕的事情要發生了編譯器有可能出現:
1>c:\program files\microsoft visual studio 9.0\vc\include\cmath(21) : error C2039: “acosf”: 不是“`global namespace'”的成員
1>c:\program files\microsoft visual studio 9.0\vc\include\cmath(21) : error C2873: “acosf”: 符號不能用在 using 聲明中
1>c:\program files\microsoft visual studio 9.0\vc\include\cmath(21) : error C2039: “asinf”: 不是“`global namespace'”的成員
等。
這是因為你的math.h與系統庫中的math.h衝突了。怎麼辦呢?你見過boost庫中的包含方法嗎?boost庫中是這麼做的:
#include<boost/random.hpp>
也就是說,他將random.hpp檔案放在檔案夾中,編譯器找到的是這個檔案夾boost的上層目錄(注意不是boost目錄本身,否則你就要使用#include<random.hpp>了),讓後#include裡就有boost了,就不會和其他檔案夾中的random.hpp衝突了。你應該知道怎麼建立自己的math.h了吧?是的,把自己經常使用的源檔案放在目錄中,將這個目錄的父目錄添加到編譯器的附加目錄中即可。
做法:右鍵項目名》屬性》配置屬性》c/c++》常規》附加元件封裝含目錄,添加自己的庫目錄的父目錄進來。
第二,標頭檔與源檔案:一般的C++書都告訴我們,將聲明放在標頭檔中(顯示有哪些功能);將定義放在源檔案中(功能的實現部分);標頭檔應該包含對應的源檔案;使用時只需要包含對應的標頭檔即可。這都建立在上一步中添加附加目錄已經設定的情況下。
第三,讓多重專案都使用這個程式碼程式庫:首先,你應該將自己的程式碼程式庫放到一個“寶貴的地方”,這個地方可以是百度網盤,金山快盤等網盤在本機上的檔案夾中,這樣你可以通過網盤實現自動備份。其次,你應該在每個項目的屬性中添加你自己的這個庫目錄位址(見第一,標頭檔的放置)。這樣你可以在一個項目中改動完善你自己的庫檔案,其他的項目自動使用更改後的版本。