我的结构node
,label
和cost
我想将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);
}
答案 0 :(得分:0)
您添加的节点都具有相同的成本,这就是您用作排序键的内容。 set
只会存储唯一元素,因此您只需为特定成本获取一个元素。如果您想以相同的费用存储多个元素,则应使用multiset
代替。