Set

数据结构

set, multiset,map,multimap都是基于红黑树的关联容器。

set容器特点:(1)数据类型一致(2)值唯一(3)自动排序

优势:(1)与map一并而谈,插入、删除效率比其他序列容器要好(源自红黑树底层结构)

接下来介绍操作:

操作

1. 属性查看

begin() 返回set容器第一个元素的迭代器
rbegin() 返回的值和end()相同
end() 返回一个指向当前set末尾元素的下一位置的迭代器.
rend() 返回的值和begin()相同
max_size() 返回set容器可能包含的元素最大个数
size() 返回当前set容器中的元素个数
clear() 删除set容器中的所有的元素
empty()

注意:begin() 和 end()函数是不检查set是否为空

2. 查找

equal_range() 返回一对定位器,分别表示第一个大于或等于给定关键值的元素和第一个大于给定关键值的元素,这个返回值是一个pair类型,如果这一对定位器中哪个返回失败,就会等于end()的值。

lower_bound(key_value) 返回第一个大于等于key_value的定位器

upper_bound(key_value) 返回最后一个大于等于key_value的定位器

find() 返回给定值值得定位器,如果没找到则返回end()。

3. 删除

erase(iterator) 删除定位器iterator指向的值

erase(first,second) 删除定位器first和second之间的值

erase(key_value) 删除键值key_value的值

注意:set中的删除操作不进行任何的错误检查

4. 插入

insert(key_value) 将key_value插入到set中 ,返回值是pair<set::iterator,bool>,bool标志着插入是否成功,而iterator代表插入的位置,若key_value已经在set中,则iterator表示的key_value在set中的位置。

insert(first, second) 将定位器first到second之间的元素插入到set中,返回值是void.

5. 结构比较

(1)元素不是结构体

struct cmp{
  bool operator()(const dataType &a, const dataType &b){
    return a.data - b.data > 0;
  }
}

set<int, cmp> s;
set<int, cmp>::iterator pr;

(2)元素是结构体,直接在结构体内重载函数

struct info{
  int age;
  char name[20];

  //重载比较函数
  bool operator < (const info &a){
    return age < a.age;
  }
}

set<info> s;
set<info>::iterator it;
posted @ 2025-02-10 14:00  cat_sleep  阅读(22)  评论(0)    收藏  举报