Multiset对象

时间:2012-06-10 03:36:05

标签: c++ set multiset

我有multiset < Class1 > myset; 所以我创建了一个新对象:Class1* c1 = new Class1(); 我希望能够myset.insert(c1)myset.insert(new Class1());,但没有一个可以工作。

class Class1{
 int time;
public:
  CLass1(int t) : time(t) {}
  bool operator<(Class1 &c2) {return time < c2.time;}
}

插入对象与插入整数有何不同?我能够插入整数。

1 个答案:

答案 0 :(得分:2)

在您的定义中,myset包含Class1个对象,而c1是指向Class1个对象的指针。这就是类型问题。

使用myset保存指向对象的指针 - multiset<Class1 *> myset,或将新创建的对象复制到myset - myset.insert(*c1); delete c1;。请注意,容器需要对象必须是可复制和可分配的,并且应该通过实现operator<来比较。