ACM第2次STL(set和map)

一、set和multiset
1.区别:set容器中不允许元素重复,multiset可以允许重复
2.操作:
头文件#include
set<数据类型>s;
s.size() – 返回容器内元素个数。
s.empty() – 容器为空。
s.count(a) – 返回元素值为a的元素的个数。
s.lower_bound(a) – 返回元素值大于等于a的第一个元素位置。
s.upper_bound(a) – 返回元素值大于a的第一个元素的位置。
s.begin() – 指向第一个元素位置。
s.end() – 指向最后一个元素的下一个位置
s.clear()–清空set容器中的元素
s.erase(a)–删除set中与a元素相等的所有元素
s.erase(iter)–删除迭代器iter所指位置的值
3.运用迭代器输出set中的元素?
for(iter=s.begin();iter!=s.end;iter++)
cout<<*iter;
二、map和multimap
1、区别:
map中所有元素都会根据元素的键值(第一个元素)自动排序(从小到大),map的所有元素都是pair,pair的第一个元素被视为键值,第二个元素为实值。map不允许两个元素有相同的键值,但multimap可以。
2、应用:
头文件#include
map<数据类型1,数据类型2>m;
m.size() 返回map中元素的个数
m.empty() 容器为空
m.count(a) 返回键值(第一个元素)等于a的元素的个数
m.lower_bound(a) 返回键值大于等于a的第一个元素的位置
m.upper_bound(a) 返回键值大于a的第一个元素的位置
m.begin() 返回一个双向迭代器,指向第一个元素的位置
m.end() 返回一个双向迭代器,指向最后一个元素的下一个 位置。
m.clear() 清空整个容器
m.erase(a) 清楚键值为a的所有元素,返回个数,对 于map来说非0即1。
m.erase(pos) 清除迭代器pos所指位置上的元素。
3、如何增加元素于map中?
①运用value_type插入
map<string, float> m;
m.insert(map<string, float>:: value_type (“Robin”, 22.3));
② 运用pair<>
m.insert(pair<string, float>(“Robin”, 22.3));
③运用make_pair()
m.insert(make_pair(“Robin”, 22.3));
④直接加入
m[键值]=实值;

猜你喜欢

转载自blog.csdn.net/qq_43550247/article/details/88544227