c++中template對字符串的處理方法
更新時間:2014年07月23日 16:29:09 投稿:shichen2014
這篇文章主要介紹了c++中template對字符串的處理方法,需要的朋友可以參考下
C++中的Template作用是把僅類型不同但功能相似的函數(shù)合并在一起,但是有時候template中的函數(shù)并不能滿足所有的類型調用。如下所示:
template <class Kty>
inline int hash_wrap(const Kty& k)
{
return (int)k;
}
所有的數(shù)字類型使用該模板都沒有問題,但是string類型卻不行,因為不支持有string到int的類型轉換(編譯過程中)。這樣我們就需要在該模板外添加一個對string類型的支持,代碼如下:
template <>
inline int hash_wrap<string>(conststring & k)
{
return k.size();
}
其中template <>表明該函數(shù)是模板類型的延伸,<string>表明對原模板的string類型進行改寫。
例如下面兩個例子所示:
例1:
template <class Kty>
inline unsigned int get_size(const Kty&k)
{
return sizeof(Kty);
}
template <>
inline unsigned int get_size(conststring& k)
{
return k.length() + 1;
}
例2:
template <class Kty>
inline bool cmp_key(const Kty& k, constchar* dest)
{
return k == *(Kty* )dest;;
}
template <>
inline bool cmp_key(const string& k,const char* dest)
{
return strcmp(k.c_str(), dest) == 0;
}
相關文章
opencv4.5.4+VS2022開發(fā)環(huán)境搭建的實現(xiàn)
本文主要介紹了opencv4.5.4+VS2022開發(fā)環(huán)境搭建的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
C++11/14 線程中使用Lambda函數(shù)的方法
這篇文章主要介紹了C++11/14 線程中使用Lambda函數(shù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01

