函数对象无法识别它获得的 param(std::set<int>)

Posted

技术标签:

【中文标题】函数对象无法识别它获得的 param(std::set<int>)【英文标题】:function object doesn't recognize the param(std::set<int>) that it gets 【发布时间】:2017-02-01 19:32:55 【问题描述】:

我正在尝试编写一个使用函数对象的模板函数。 函数对象获取的参数是std::set(类型int)。 出于某种原因,当我尝试使用 for(auto curr: set) 抛出集合时,它甚至没有进入 for 循环,就像它不识别它是一个 stl 集合一样!

主要:

int main()

    Functor object_x;
    SetInt set_1=1,2,6,4,3;
    SetInt set_output;

    set_output=mtmAlgorithem_2(set_output ,set_1,object_x);
    return 0;

这是模板:

template < typename SetToReturn,typename Generic, typename Functor >

SetToReturn mtmAlgorithem_2(SetToReturn a,Generic input, Functor object)

//All elements after element X including X.
    SetToReturn after_x;
    //All elements before element X not-including X.
    SetToReturn before_x;
    //Output set
    SetToReturn output;

    //copy elements from input to after_x:
    for(auto element: input)
        after_x.insert(element);
    

    for(auto element: input)


// > ---------THIS IS WERE I CALL THE FUNCTION OBJECT------

        if(object(before_x,after_x))
            output.insert(element);
        
        before_x.erase(element);
        after_x.insert(element);
    
    return output;

这是函数对象:

class Functor

    public:
        bool operator()( SetInt &before_x, SetInt &after_x)
            bool res=true;
            for(int curr_1: before_x)


//------------not getting here---------------!!!!!!!!!!!!!!

                for(int curr_2: after_x)
                    if(curr_1>curr_2)
                        res=false;
                        break;
                    
                
            
            std::cout<<"lla"<<std::endl;
            return res;
        ;
;

【问题讨论】:

SetInt 定义在哪里? 【参考方案1】:

你从来没有在before_x 中放过任何东西,所以这个循环当然不会做任何事情。

【讨论】:

以上是关于函数对象无法识别它获得的 param(std::set<int>)的主要内容,如果未能解决你的问题,请参考以下文章

mysqli_fetch_assoc() 期望参数/调用成员函数 bind_param() 错误。如何获得实际的mysql错误并修复它?

mysqli_fetch_assoc() 期望参数/调用成员函数 bind_param() 错误。如何获得实际的mysql错误并修复它?

mysqli_fetch_assoc() 期望参数/调用成员函数 bind_param() 错误。如何获得实际的mysql错误并修复它?

mysqli_fetch_assoc() 期望参数/调用成员函数 bind_param() 错误。如何获得实际的mysql错误并修复它?

mysqli_fetch_assoc() 期望参数/调用成员函数 bind_param() 错误。如何获得实际的mysql错误并修复它?

mysqli_fetch_assoc() 期望参数/调用成员函数 bind_param() 错误。如何获得实际的mysql错误并修复它?