函数对象无法识别它获得的参数(std::set<int>)
function object doesn't recognize the param(std::set<int>) that it gets
我正在尝试编写一个使用函数对象的模板函数。函数对象获取的参数是 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;
};
};
你从来没有把任何东西放进before_x
所以当然循环不会做任何事情。
相关文章:
- 在声明中合并两个常量"std::set"(不是在运行时)
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将 std::set 与基于键的比较器一起使用
- 修改"std::set"中用户定义类型的值
- 如何在构造函数参数中初始化"std::set"?
- 如何使用 lower_bound/upper_bound 从 std::set 获取索引号?
- 如何在 C++ 中转发声明 std::set?
- 重构使用动态强制转换的 std::set 的比较运算符
- 为什么 std::set.erase(first, last) 会影响从中获取 (first, last) 的容器?
- std::set 是否将对象连续存储在内存中?
- 是否有一个 std::set 函数来确定不超过数字 x 的最大元素?
- 有什么理由不扩展 std::set 以添加下标运算符吗?
- 我从 std::set 得到const_iterator而不是迭代器
- 为什么 std:set(带有单个冒号)可以编译?
- 遍历 std::set 中包含的所有三重不同值?
- 插入 std::set 作为 std::map 的键
- 如何在 c++ 中使用默认值将 std::set 转换为 std::map
- 错误:'class std::unique_ptr<std::set<long unsigned int> >'没有名为 'size' 的成员
- 如何从 std::set 绘制 n 个元素的样本
- 为什么 std::set 容器使用的内存比其数据大小多得多?