自学内容网 自学内容网

C++ set multiset map multiset用法

set

1.insert插入

ser中插入的方法规则和搜索二叉树一样,大于key在右边,小于在左边。

插入成功返回pair类型,里面第一个参数iterator 指向新插入节点 bool是true

失败 参数iterator 指向已经存在的节点 bool是false

set<int>a;
//1.直接插入值
a.insert(1);
a.insert(2);
a.insert(3);
a.insert(4);
for (auto& i : a)
{
cout << i << ' ';
}
cout << endl;
//2.在pos位置插入 不常用
a.insert(a.begin(), 10);
for (auto& i : a)
{
cout << i << ' ';
}
cout << endl;
set<int>b;
//3.插入一段区间 a.begin()+1不对 没有对应重载
b.insert(++a.begin(), a.end());
for (auto& i : b)
{
cout << i << ' ';
}
cout << endl;

2.find查找

找到返回节点位置iterator,找不到返回end()

3.erase删除

a.erase(a.begin())指定位置删除 删除最小值 

4.count返回set中对应数据的个数

在set只有0个或者1个,可以判断是否存在。但在multiset中可以存在重复的值,返回对应数的个数。

5.upper_bound lower_bound

lower_bound(30) 返回>=30的位置

upper_bound(60) 返回>60的位置

myset.erase(itlow,itup)删除>=30 <60的数。因为删除是[ ) 所以upper_bound返回大于目标值的位置

multiset

multiset可以插入重复的值

insert

一般都会插入成功,所以只返回iterator插入成功的位置

find

multiset查找是根据中序遍历的顺序,如果有多个相同的值返回最左边的节点(中序遍历的第一个)。

count

返回对应值的个数

equal_range 返回同一个值的范围 左闭右开[ )

ret.first第一个30位置 ret.second 77位置

map

map和set区别在于map是ket value模型,set数据只有key。

insert

map虽然有两个数据,但只需传一个参数pair就行。

value_typepair<const key_type,mapped_type>

插入成功返回pair类型,里面第一个参数iterator 指向新插入节点 bool是true.

失败 参数iterator 指向已经存在的节点 bool是false.

有就返回节点位置,没有创建节点并返回对应位置。

operator[]

返回值为节点的value,实现过程

1.make_pair(K,mapped_type)) 创建一个pair对象

2.this->insert(——) 插入有就返回已存在的节点,没有就新创建一个并返回。类型为pair<iterator,bool>

3.(this->insert(——)).first 取目标节点的iterator

4.*((this->insert(——)).first)解引用返回,类型为pair<key,value>

5.*((this->insert(——)).first).second 取value

operator[]用法

multimap

如果两个节点key值一样,multimap仍可以储存。

multimap中没有[]的重载,因为可能有多个相同的值。


原文地址:https://blog.csdn.net/wws7920/article/details/140476493

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!