C ++初始化一组结构

时间:2018-11-01 16:55:28

标签: c++ struct set

我正在尝试创建一组结构,但是我的代码不断出现错误,并且我在网上找不到任何东西。

struct smove {

    int src;
    int dst;
};

int main()
{

    smove moov;
    moov.dst = 1;
    moov.src = 2;
    set<struct smove> moovs = {moov};
    return 0;
}

1 个答案:

答案 0 :(得分:4)

集合的值类型必须小于可比值。这样容器就知道元素之间如何关联以及以什么顺序(包括确保没有重复)。

短篇小说,为operator<制作一个smove

长话说长说了,因为该操作员必须以某种方式工作,但是您可以read up on that。现在,这是一个简单的示例,该示例使用std::tie快速获取合法订单:

#include <set>
#include <tuple>

struct smove
{
    int src;
    int dst;
};

bool operator<(const smove& lhs, const smove& rhs)
{
    return std::tie(lhs.src, lhs.dst) < std::tie(rhs.src, rhs.dst);
}

int main()
{
    smove moov;
    moov.dst = 1;
    moov.src = 2;
    std::set<smove> moovs = {moov};
}