关联容器内部的元素依据其值自动排序,内部由二叉树实现便于查找
可以看到上述示例,如果不动态调整内部的元素的排列的话可能会使左边这样通过剪枝便于查找的结构退化成单链表形式,所以set和map是基于平衡二叉树
1.set案例:扩展set集合:实现交、并、差
代码实现:
#include <iostream>
#include <set>
#include <string>
using namespace std;
class Student
{
public:
Student(string number, string name) :m_number(number), m_name(name)
{}
bool operator<(const Student& s) const
{
int mark = m_number.compare(s.m_number);
return mark < 0 ? true : false;
}
string getNumber()const
{
return m_number;
}
string getName()const
{
return m_name;
}
private:
string m_number;
string m_name;
};
ostream&