我试图在不暗示比较时理解std::set_intersection
的语法。
在这个例子中,我试图得到一个和两个的交集,这应该导致一个包含y
的集合。
我的尝试不会编译,这是错误:
将'const Example'作为'this'参数传递会丢弃限定符
这是代码:
using namespace std;
struct Example
{
string a;
};
struct Compare_custom
{
bool operator () (const Example & first, const Example & second)
{
if(first.a.size() > second.a.size())
return true;
else
return false;
}
};
int main(void)
{
set<Example, Compare_custom> one;
set<Example, Compare_custom> two;
Example x, y, z;
x.a = "1";
y.a = "12";
z.a = "123";
one.insert(x);
one.insert(y);
two.insert(y);
two.insert(z);
set<Example, Compare_custom> intersect;
set_intersection(one.begin(), one.end(),
two.begin(), two.end(),
intersect.begin(), Compare_custom());
return 0;
}
我做错了什么?
答案 0 :(得分:2)
std::set_intersection
错误地使用std::set
。试试这个:
std::set_intersection(one.begin(), one.end(),
two.begin(), two.end(),
std::inserter(intersect, intersect.begin()), Compare_custom());