我有一些泛型函數返回<T>
類型的變量。我將一些2個迭代器傳遞給函數。然後,我嘗試用函數distance
來計算矢量的大小。在函數內部,我定義了一個新的類型定義,稱爲v_size
,但該矢量的<T>
類型未知。我如何通過只傳遞迭代器來計算矢量的大小?通過迭代器確定變量類型C++
template<class In, class T>
T my_func(In b, In e)
{
typedef typename vector<T>::size_type v_size;
v_size size = distance(b, e);
...
...
}
當你實例化你的函數時,'T'不會是未知的。我不清楚你實際遇到的問題是什麼。請提供[MCVE]。 –
這段代碼很奇怪:如果你知道*'In'是'std :: vector :: iterator',那麼爲什麼你有兩個模板參數呢?如果你不這樣做,那麼你爲什麼使用'std :: vector :: size_type'? –
MSalters