一起来读书205- c++标准模板库编程实战:第五章 set的使用

摘要

set容器的使用

详情

容器类别

  • set<T>容器保存T类型的对象,而且保存的对象是唯一的。
  • multiset<T>容器和set<T>容器保存T类型对象的方式相同,但它可以保存重复的对象。
  • unordered_set<T>容器保存T类型的对象,而且对象是唯一的。
  • unordered_multiset<T>容器保存T类型对象的方式和unordered_set<T>相同,但它可以保存重复对象。

函数

函数成员 说明 set<T> multiset<T> unordered_set<T> unordered_multiset<T>
insert() 插入元素,总是成功执行        
emplace() 在指定位置放置元素,总是成功        
emplace_hint() 在指定放置小部分元素,总是成功        
erase() 删除指定元素        
clear() 清除所有元素        
count() 返回指定键所对应的元素个数        
equal_range() 遍历判断相等        
lower_bound() 升序查找     -  
upper_bound() 降序查找     -  
find() 普通查找        

unordered_set<T>容器

元素类型必须可以比较是否相等,因为这可以确定元素什么时候相等。元素是无序的;

保存指针

推荐使用定义在memory头文件中的owner_less<T>函数对象类型的实例来比较容器中的智能指针.

集合运算

1.set_union():并集运算;

2.set_intersection():交集运算;

3.set_difference():差运算;

4.set_symmetric_difference():

5.includes():包含运算;

总结

  • set容器保存的对象用他们自己作为键。
  • set容器存储的T类型对象是有序的,默认使用less<T>对对象排序。
  • multiset<T>容器保存对象的方式和set相同,但对象并不是唯一的。
  • 如果两个对象是相等的,那么他们在set或multiset中会被看成同一个元素。
  • unordered_set<T>容器保存T类型的对象,并且他们是唯一的,他们的位置由对象的哈希值确定。
  • unordered_multiset<T>容器中的对象位置也是由对象的哈希值确定的,但对象不需要是唯一的。
  • 无序set容器用==operator来决定两个对象是否相等,因而T类型必须支持这个运算符
  • 无序set容器中的对象通常保存在哈希表的格子中,用对象的哈希值可以确定对象在容器中的位置。
  • 无序set容器的装载因子是每个格子平均的元素个数。
  • 无序set容器在初始时会分配一些格子。当超过最大装载因子时,格子的个数会自动增加。
  • STL定义了一些集合运算的算法。二元集合运算是交,并,差,对称,包含。

猜你喜欢

转载自blog.csdn.net/qq_27304213/article/details/107570676