标准::set_intersection 带自定义比较器
std::set_intersection with custom comparator
我试图理解使用自定义比较器时std::set_intersection
语法。我试图获取集合one
和two
的交集,这应该导致一个集合(intersect
(只包含元素f2
。
我收到错误:
将"const Foo"作为"this"参数传递会丢弃限定符
#include <set>
#include <string>
struct Foo
{
std::string str;
};
struct Compare_custom
{
bool operator () (const Foo & lhs, const Foo & rhs)
{
return (lhs.str.size() > rhs.str.size());
}
};
int main ()
{
std::set<Foo, Compare_custom> one, two, intersect;
Foo f1, f2, f3;
f1.str = "-";
f2.str = "--";
f3.str = "---";
one.insert(f1);
one.insert(f2);
two.insert(f2);
two.insert(f3);
std::set_intersection(one.begin(), one.end(),
two.begin(), two.end(),
intersect.begin(), Compare_custom());
}
我做错了什么?
您错误地将std::set_intersection
用于std::set
。试试这个:
std::set_intersection(one.begin(), one.end(),
two.begin(), two.end(),
std::inserter(intersect, intersect.begin()), Compare_custom());
相关文章:
- std::设置自定义比较器
- 带自定义比较器的最小优先级队列
- 优先级队列自定义比较器
- 什么是自定义比较器以及如何在 C++ 的排序函数中使用它?
- 没有默认构造函数作为模板参数的自定义比较器
- 使用迭代器的自定义比较器函数
- Cython中带有自定义比较器的优先级队列
- gtest 期望无序元素与自定义比较器/匹配器一起使用
- 为什么在类或结构中传递自定义比较器函数?
- 在priority_queue中使用默认容器但自定义比较器
- 是否有任何统一的方法可以在 c++ 中创建自定义比较器?
- C++ priority_queue与自定义比较器并删除任何项目
- 如何在 C++11 中将 std::max 与自定义比较器一起使用?
- 通过函数指针对类内的 STL SET 使用自定义比较器
- 基于对象的两个属性的自定义比较器会引发异常
- 如何使用自定义比较器初始化类数据成员,该成员是 std::set
- 标准::set_intersection 带自定义比较器
- 使用自定义比较器C++映射,不插入所有元素
- 优先队列的自定义比较器
- C++ STL . 自定义比较器如何工作?