0
我試圖解決下面的考試問題,但我遇到了困難。關於迭代器和泛型函數的考試
寫C++函數
find_elem
採用兩個迭代器的第一和最後T
類型的元素和T
類型的對象obj
的一些序列。它 將迭代器返回到範圍爲 (first
,last
)的第一個出現obj
,或者如果obj
不在序列中,則迭代器返回最後一個。 (35%)注:
first
&last
不一定相同,是什麼 容器的begin()
和end()
方法返回!我們唯一假設的是容器是某種序列(例如,向量,列表, 等),並且首先是一個迭代器,該迭代器指向 在last指向的元素之前出現的元素。你不能取消最後的 ,因爲它可能是end()
的結果!
這是我嘗試
template<typename Iter, typename Obj>
Iter find_element(Iter iter1, Iter iter2, Obj &obj){
for(p = iter1; p != iter2; p++){
if((*p) == obj){
return p;
}
return iter2;
}
}
這是嘗試正確的嗎?返回類型是否適合該功能或者我有錯誤的想法?
感謝答,當if條件休息,它會自動返回該點迭代器?我認爲迭代器會在返回時指向特定的obj? – Sun 2011-12-25 19:41:14
@Sun:在'break'處,循環將退出,並且'return iter1;'行將被執行。 iter1的價值正是我們當時所需要的。 – Vlad 2011-12-25 20:42:17