c-free中hashtable問題

最近在學習c++ STL方面的知識,複習《STL源碼剖析》的時候,想簡單的練習一下里面的使用實例,使用的編譯環境是比較輕巧的c-free 5.0。

前面序列容器部分沒有什麼問題,在測試hashtable的時候卡住了。hashtable在客戶端程序實現時在頭文件<hash_set.h>中。

    #include <hash_set>

首先,編譯器會提示:No such file........。找不到頭文件。

打開c-free安裝路徑,查找一下,發現文件在ext目錄下。添加一個路徑就可以了。

點擊“構建”-----》構建選項---》路徑--》添加

接下來,在聲明使用hashtable時,不出意外的話,還會有一個錯誤:

[Error] C:\Users\user\Documents\C-Free\Temp\xxx.cpp:7: error: `hashtable' was not declared in this scope

打開hash_set頭文件,可以發現命名空間不是std,而是__gnu_cxx。

使用using namespace引入一下就可以解決這個問題。

如果你像我一樣,想把書上的源碼敲一遍,會發現不少有出入的地方。原書代碼不贅述了,簡單示例一下修改後可運行的代碼,細節部分建議自行瀏覽hash_set頭文件。

#include <hash_set>
#include <iostream>
using  namespace __gnu_cxx;
using namespace std;
int main()
{
	hashtable<int,
	<span style="white-space:pre">	</span>  int,
	          hash<int>,
		  _Identity<int>,
		  equal_to<int>,
		  allocator<int> >
	iht(50,hash<int>(),equal_to<int>());	
 	cout<<iht.size()<<endl;
 	return 0;
}




最後:強烈推薦一下《stl源碼剖析》結合《effective stl》一起看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章