我正在阅读Essential C ++一书,并尝试其中的一些示例。应该从第3章的以下代码开始工作。
#include <iostream>
#include <iterator>
#include <algorithm>
#include <string>
using namespace std;
template <typename IteratorType, typename elemType>
IteratorType find(IteratorType first, IteratorType last, const elemType &value)
{
for (; first != last; ++first)
if (value == *first)
return first;
return last;
};
int main()
{
int asize = 8;
int ia[asize] = {1, 1, 2, 3, 5, 8, 13, 21};
int *pia = find(ia, ia + asize, 1024);
if (pia != ia + asize)
cout<<"found in array"<<endl;
else
{
cout<<"not found in array"<<endl;
}
return 0;
}
但是,它显示了错误
重载的“ find(int [asize],int *,int)”的调用含糊不清
然后我替换了
int *pia = find(ia, ia + asize, 1024);
使用
int *pia = find(&ia[0], ia + asize, 1024);
现在显示错误
对重载的“ find(int *,int *,int)”的调用含糊不清
我正在使用Ubuntu 18.04和G ++ 7.5.0。
如果有人能让我知道正确的实现方式,我将不胜感激。