如何创建和添加类型为struct的n个变量?

时间:2016-05-23 04:51:39

标签: c++ struct set

我的结构nodelabelcost 我想将node插入set n次,每个节点都有n标签。

struct node
{
    int label;
    int cost;
};
set <node> Q;
node *a;
    for (int i=1;i<=n;i++)
    {   a=new node;
        (*a).label=i;
        (*a).cost=LONG_MAX;
        Q.insert(*a);
    }

不知怎的,当我构建并运行它时,我仍然只在我的集合中获得一个变量。我做错了什么?

struct node
{
    int label;
    int cost;
    bool operator < (const node &other) const { return cost < other.cost; }
    bool operator == (const node &other) const { return label < other.label; }
}; 
I'm not sure if that is correct.

(解决) 我的循环现在如何:

multiset <node> Q; //instead of set <node> Q;

    for (i=1;i<=n;i++)
        {
            node a;
            a.label=i;
            a.cost=LONG_MAX;
            Q.insert(a);
        }

1 个答案:

答案 0 :(得分:0)

您添加的节点都具有相同的成本,这就是您用作排序键的内容。 set只会存储唯一元素,因此您只需为特定成本获取一个元素。如果您想以相同的费用存储多个元素,则应使用multiset代替。