同样的我着重介绍那些我不怎么用到的系列,同时,常用的我就点一下。
我们都知道set底层是用红黑树实现的,红黑树是一种已排序的树,所以我们通过迭代器来访问节点元素的时候,并不可以改变它,如果随意改变,那排序规则就乱套了。
讲API之前,现介绍一个 对组(pair)的概念。
对组(pair)将一对值组合成一个值,这一对值可以具有不同的数据类型,两个值可以分别用pair的两个公有属性first和second访问。
创建对组的方法
一、使用拷贝构造
pair<string, int> pair1(string("name"), 20); cout << pair1.first << endl; //访问pair第一个值 cout << pair1.second << endl;//访问pair第二个值二、使用make_pair
pair<string, int> pair2 = make_pair("name", 30); cout << pair2.first << endl; cout << pair2.second << endl;对组可以方便的将不同数据类型作为返回值,一次返回两个数值。
构造,赋值和大小操作
set<T> st; //set默认构造函数。 set(const set &st); //拷贝构造函数 swap(set st); //交换两个集合容器 size(); //返回容器中元素的数目 empty(); //判断容器是否为空与前几篇说的一致。
插入与删除
pair<iterator,bool> insert(elem); //在容器中插入元素。 void insert(beg,end) //插入[beg,end)范围元素 iterator erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。 iterator erase(beg, end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。 size_type erase(elem); //删除容器中值为elem的元素。 void clear(); //清除所有元素这边强调一下erase和insert:
关于erase:
- 既可以删除迭代器指向的元素,也可以删除指定的元素值。与list一致。
- 删除迭代器的时候返回指向的下一个迭代器。
- 删除指定元素的时候,返回的是这个元素在容器中的个数。(set为0或1,multiset可以大于1)
关于insert:
- 唯一的一个插入元素的动作。
- 插入元素时,返回一个对组。第一个成员是指向新插入值或已存在的这个值的迭代器,第二个成员表示插入成功与否(不存在的,新插入的为真,已存在的不需新插入为假)。
- 范围插入的时候,没有返回值。
查找函数
这才是今天的重点。
iterator find(key); //查找键key是否
