我有以下問題:我需要做一個函數,它需要兩個迭代器和一個值,並檢查兩者之間是否找到值。 catch:我只能有一個模板參數,它表示迭代器中元素的類型和值。聲明泛型迭代器
我的嘗試是這樣的,但似乎並沒有工作:
template <typename T>
T myFind(iterator<std::bidirectional_iterator_tag,T> begin, iterator<std::bidirectional_iterator_tag, T> end, T elem){
// Code
}
但這不工作,那麼:
// vector<int> vect; list<string> lst;
myFind(vect.begin(), vect.end(), 15);
myFind(lst.begin(), lst.end(), "some element");
任何想法? 代碼後的變化:
template <typename T>
T myFind(T begin, T end,typename std::iterator_traits<T>::value_type elem){
for(T it = begin; it != end; ++it){
if(*it == elem){
return it;
}
}
return end;
}
你爲什麼使用雙向迭代器? –
這是我最後一次努力的一部分,使這項工作:) – Daniel
「我只能有一個模板參數」 - 爲什麼?這是一個完全愚蠢的限制。 – Xeo