自定义结构集声明中的错误

时间:2012-02-05 10:22:08

标签: c++ struct set

我遇到了一个奇怪的编译器错误,因为我刚接触使用自定义结构的set,我不确定究竟是什么问题。

我正在尝试创建一组“对”,并使用自定义比较功能插入所述对。

struct pairT {
    std::string first, second;
};

int PairCmp(pairT &one, pairT &two) {
    if (one.first < two.first && one.second == two.second) return 0;
    else if (one.first < two.first) return -1;
    else if (one.first == two.first && one.second < two.second) return -1;
    return 1;
}

std::set<pairT> CartesianProduct (std::set<std::string> &one, std::set<std::string> &two) {
    std::set<pairT> returnSet(PairCmp);
    /.../

我从最后一行代码中得到错误: C2664“无法将参数1从int转换为const std :: less ... blah,blah,blah。

有关为什么我的屁股被踢的任何建议?

1 个答案:

答案 0 :(得分:1)

使用对象(而不是指针)要求您为std::set命名第二个模板参数,用于比较pairT的两个对象。有关示例,请参阅std::less<>

另外,你在这里尝试的似乎是错的。您尝试在std::set中返回CartesianProduct(),但返回的PairCmp()会返回一个整数。