c++ - 多组对象

标签 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;}
}

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

最佳答案

在您的定义中,myset持有 Class1对象,同时 c1是指向 Class1 的指针目的。这就是类型问题。

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

关于c++ - 多组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10966191/

相关文章:

java - Java从HashSet中获取特定的类对象

ios - 如何生成所有可能的组合?

c++ - std::multiset 和上限和下限的奇怪行为

oracle - pl-sql 中的表转换与转换多重集

c++ - 生成按字典顺序大于输入的字符串

c++段错误试图访问 vector

c++ - 指针算术表达式是否算作指令?

c++ - 对字符求和并减去得到文件

python - 检查元组列表是否是另一个元组的子集

列出将数字分解为 k 个因子的所有可能方法的算法?