我正在寫一個哈希表,但我遇到了一個困難。我想用非標準容器(向量,列表等)的內容對它進行初始化,如地圖:
map <string,int> m(a.begin(),a.end())
我對類的定義如下:template <class key,class val,class hashik=std_hash> class hash_table
。
我定義構造函數:使用STL迭代器的模板構造函數
template <template <class> class C> hash_table(typename C<pair <key,val> >::iterator first,typename C<pair <key,val> >::iterator last)
{
init();
for(pair <key,val>* it=first;it!=last;++it)
this->operator[](it->first)=it->second;
}
不過,這並不編譯。 沒有匹配的調用函數。例如:
vector <pair <string,int> > a;
...
hash_table <string,int> m(a.begin(),a.end()); //compilation error
我在做什麼錯?哪些關於模板的書可以建議我閱讀?
你可以發表一個[示例](http://www.sscce.org/),其他人可以嘗試編譯? – Praetorian