错误:没有要调用的匹配函数

Error: No Match Function to Call

本文关键字:函数 调用 错误      更新时间:2023-10-16

我想让我的向量,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&)

有什么建议吗?谢谢。

标准库函数find位于命名空间std中。

std::find.

也不要忘记#include <algorithm>.

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

它抱怨这行代码。显然,您的 find() 函数(此处未提供)与您调用它的方式不匹配。

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

另请注意:确保 find 函数返回一个矢量迭代器,因为这是您使用它进行比较的内容!=

尝试包含算法标头。我认为它应该有效。