函数对象无法识别它获得的 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错误并修复它?