04 B端产品经理能力培养

阅读 19

2024-07-24

set基本介绍

set是key模型,本质是确定一个
元素在不在此容器中,也就是说
set中存储的是一个单一数据

set的模板参数只有T

set只支持增删查,不支持改!

set结构中遍历出来是
数据有序并且去重的!

map基本介绍

map和set的区别就是,map中存储
的并不是一个单一数据,而是存储了
一个pair结构!(后面会讲解)

map的模板参数中有key和T

map都支持增删查,不支持改!

map结构中遍历出来是
数据有序并且去重的!

pair结构介绍

pair结构实际上是一个键值对:

template <class T1, class T2>
struct pair
{
	T1 first;
	T2 second;
	pair(): first(T1()), second(T2())
	{}
	pair(const T1& a, const T2& b): first(a), second(b)
	{}
};

map中存储的就是pair结构,所以
map也叫存储的KV模型,因为first和
second对应key和value

map的三种常见使用方法:

1. 方法一: 定义pair对象后插入

map<string,string> dict;
pair<string,string> kv1("排序","sort");
pair<string,string> kv2("左边","left");
dict.insert(kv1);
dict.insert(kv2);

2. 方法二: 使用匿名对象插入

map<string,string> dict;
dict.insert(pair<string,string>("排序","sort"));
dict.insert(pair<string,string>("左边","left"));

3. 方法三: 使用make_pair插入

map<string,string> dict;
dict.insert(make_pair("排序","sort"));
dict.insert(make_pair("左边","left"));

显而易见,make_pair是最方便的也是最常用的方法!

set详解

可以看到,第二个模板的第二个参数是less,

set默认情况下遍历出是升序,

但是定义对象显示传参greater就会变为降序!

set<int,greater<int>> s;

插入函数insert

查找函数find

删除函数erase

map详解

相较于set,map还

支持方括号的使用:

string arr[]={"苹果","西瓜","香蕉","苹果","西瓜","西瓜","西瓜","苹果"};
map<string,int> countmap;
for(auto str : arr)
{
	countmap[str]++;
}

方括号自带插入功能,当
出现第一个"苹果"时,会自动把"苹果"
插入到map中,第二次遇见"苹果"时,
会将"苹果"的计数++变成2

删除函数

查找函数

erase和find传参只用传pair中的first
类型的参数,即可完成任务,并且find的
返回值和set的find是一样的

multimap和multiset

multimap不支持方括号!

当我们插入相同的数据时,它也会保存

总结

熟悉map和set的使用在平常做题
时会有大用处,但是平时用的更多的
是unordered_map/set,不过它们的
使用方法基本一致。

精彩评论(0)

0 0 举报