STL学习篇_set和map容器用法

STL学习篇_set和map容器用法
1.set容器的用法
set(集合)属于关联类型容器,具有以下特点:
(1)有序,插入到set中的元素会自动排序;
(2)无重复,怎么判定插入到set容器中的元素是否重复呢?
使用
double v;
pair<set::iterator, bool>r;
r = s.insert(v);
if (!r.second)
cout << v << “is duplicated” << endl;//v在set中已经存在,插入失败。
首先定义了一个pair,第一个参数是指向set容器的迭代器,第二个容器是布尔值,可以判定插入是否成功。
(3)有限
示例代码如下:
#include
#include
#include
#include
using namespace std;
int main()
{
sets;
pair<set::iterator, bool>r;
while (true)
{
double v;
cin >> v;
if (v == 0)
break;
r = s.insert(v);
if (!r.second)
cout << v << “is duplicated” << endl;
}
set::iterator iter1 = s.begin();
set::iterator iter2 = s.end();
double media = (*iter1 + *(–iter2)) / 2;
cout << "media is " << media << endl;
cout << “<= media is”;
copy(s.begin(), s.upper_bound(media), ostream_iterator(cout, " "));
cout << endl;
system(“pause”);
return 0;
}
重点:upper_bound和lower_bound的用法:
lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个小于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

2.map的用法
map(映射)与set的相同之处在于不重复;区别在于set的元素本身就是键值,而map则有键和元素构成。这一点从他们的定义就可以看出:
sets1;
map<string,double>s2;
此处以字符串为键,元素类型为double.
在这里插入图片描述
这是摘自CSDN学院课程中的PPT,示例程度如上所示。
本文部分内容参考别人的成果,在此仅做记录以便以后用到时候翻阅。
参考链接:https://blog.csdn.net/qq_40160605/article/details/80150252

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值