我收到的編譯錯誤是以下代碼。我認爲這應該已經在C++ 有人可以幫助我瞭解這裏有什麼問題。以stl容器作爲輸入的函數模板
template < typename elem_type>
elem_type *find2(std::vector<elem_type>& vec, elem_type value) {
for (int i = 0; i < vec.size(); ++i) {
if (vec[i] == value) {
return &vec[i];
}
}
return 0;
}
int main(int argc, char **argv) {
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
std::vector<int> vec(arr, arr+10);
int value = 9;
int *ptr1 = find2(vec,value);
}
以下是編譯錯誤
1> d:\personal\work\find\find\find.cpp(25) : see reference to function template instantiation 'elem_type *find2<int>(std::vector<_Ty> &,elem_type &)' being compiled
1> with
1> [
1> elem_type=int,
1> _Ty=int
1> ]
編譯器是Visual Studio 11
爲什麼不發佈完整的錯誤信息? – 2012-02-24 05:58:34
你知道你可以使用'std :: find(arr,arr + 10,9)'...? – 2012-02-24 06:03:27
我剛用g ++編譯代碼,編譯時沒有錯誤。我添加了「#包括」。當我添加「std :: cout << * ptr1 << std :: endl;」它輸出正確的答案。那麼......你的編譯器? –
Avi
2012-02-24 06:06:57