错误:无需调用匹配函数

时间:2014-01-02 05:17:49

标签: c++

我想让我的vector vector_list没有任何重复的数据。代码如下:

int is_Tally(int num ) 
{
    vector<int> vector_list;
    for(int i=1; i< 1000;i++)
    {
        int item = (i*num)%10000;
        if (vector_list.empty())
        {
            vector_list.push_back(item);
        }
        else
        {
            if (find(vector_list.begin(), vector_list.end(), item)!=vector_list.end())
            {
                vector_list.push_back(item);
                if (vector_list.size()>15)
                {
                    return 0;
                }
            }
        } 
    }
    return vector_list.size();

我执行代码时遇到错误。

error: no matching function for call to 'find(__gnu_cxx::__normal_iterator<int*,     std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, int&)

有什么建议吗?感谢。

3 个答案:

答案 0 :(得分:6)

标准库函数find位于名称空间std

撰写std::find

另请不要忘记#include <algorithm>

答案 1 :(得分:1)

if (find(vector_list.begin(), vector_list.end(), item)!=vector_list.end())

这是在抱怨这行代码。显然你的find()函数(这里没有提供)与你调用它的方式不匹配。

确保find函数有两个参数用于向量迭代器,后跟一个int的参数,因为这是你在函数调用中传递的内容。

另请注意:确保find函数返回向量迭代器,因为这是使用!=进行比较的

答案 2 :(得分:1)

尝试包含算法标题。我认为那应该有效。