說我有這樣的計算地圖元素的這樣的總和模板函數:如何測試包含的地圖類型
template <class A, class B> double Total(const map<A, B>& cntr)
{
map<A, B>::const_iterator iter;
double total = 0;
for (iter = cntr.begin(); iter != cntr.end(); ++iter)
total += iter->second;
return total;
}
這將做工精細,每當B爲數字類型;然而,很顯然,如果你通過了一個類似map<int, string>
的引用,它將無法工作。
我想知道如何測試包含在地圖的非關鍵部分中的類型,以便我可以通過異常或其他東西。我嘗試使用isdigit(),但似乎無法得到一個工作版本。
編輯:我的測試用途是添加功能,以便int類型總是用來計算總數,所以我可以通過map<int, string>
或map<string, int>
,它會一直計算int類型。
我確定編譯器會告訴你'+ ='不適用於double和string。 – 2012-02-05 15:54:44
爲什麼你的返回類型是'double'而不是'B'? – 2012-02-05 15:59:55
對不起,措辭不佳。我沒有具體說明我的用途。編輯。 – bqui56 2012-02-05 16:01:52