我收到的编译错误是以下代码。我认为这应该已经在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