我有 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;}
}
插入对象与插入整数有何不同?我能够插入整数。
最佳答案
在您的定义中,myset
持有 Class1
对象,同时 c1
是指向 Class1
的指针目的。这就是类型问题。
要么你使用myset
保存指向对象的指针 -- multiset<Class1 *> myset
, 或者将新创建的对象复制到 myset
-- myset.insert(*c1); delete c1;
.请注意,容器要求对象必须是可复制和可分配的,并且应该通过实现 operator<
进行比较。 .
关于c++ - 多组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10966191/