C++:如何检查集合中是否存在具有特定 属性 的对象

C++: How to check that an object with a specific property exists in a set

我有以下结构:

struct dependence {
    dependence() {}
    dependence(string CUid, LID sink, LID source, std::string var)
    : CUid(CUid), sink(sink), source(source), var(var) {}

    string CUid;

    LID sink = 0;
    LID source = 0;
    std::string var;
};

现在我想在集合中插入这个结构的对象。我有具有相同 CUid 的对象,但(重要!)其他属性(sinksourcevar)可能不同。我想防止在集合中插入具有相同 CUid 的对象。所以我知道的唯一方法是遍历集合并检查 CUid 的每个对象。有没有更好的方法用更少的代码来检查它?

您可以使用自定义比较器来定义对象在集合中的存储顺序。

struct cmp
{
    bool operator()(const dependence &a,const dependence &b) const
    {
        return a.CUid < b.Cuid;
    }
};

然后

std::set<dependence,cmp> myset;

现在,如果您尝试插入具有相同 CUid 的对象,只有第一个实例会进入 myset

编辑:

另一种方法是重载 < 运算符。

bool operator<(const dependence &a,const dependence &b)
{
    return (a.CUid<b.CUid);

}

然后

std::set<dependence> myset;