在java中,存放不同元素的容器是set,元素是否相同使用equals方法和hashCode方法来定义。
假如要给set中存放自定义类,那么就得实现equals方法和hashCode方法。

在c++中也有c++,用来存放不同的元素,天真的我也就直接使用了set,并且重载了==运算符
结果发现,里面是有问题。
c++中的set有两种,分别是
c++中的std::set,是基于红黑树的平衡二叉树的数据结构实现的一种容器,因为其中所包含的元素的值是唯一的
unordered_set的实现方式为哈希函数,所以无序关联容器不会根据key值对存储的元素进行排序


所以简单的来说,使用有序set,你得重载小于号
里面你只要记住两点,如果两个元素相等,就返回false
如果两个元素不相等,那么就得指定一个不会矛盾的比较方法。



使用无序set,那就和java类似了。
第一重载==运算符
第二自定义hash函数



其实如果单纯的只是想存放一堆不同的元素,在c++中应该使用unordered_set。
我之前的问题是知道java中有个set,相同的需求就直接用了c++中的set。
另外unordered_set是c++11才出来的。