STL(集合、映射、优先队列)

1. set(集合)

1.1 特点:集合中的元素不可以重复,因此集合中的元素可以自动去重。集合的增删改查比普通数组快。其时间复杂度是log(n)。

1.2 操作:

1.3 示例:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	
	set<int>s;
	set<int>::iterator it;
	
	s.insert(1);
	s.insert(2);
	s.insert(3);
	s.insert(1);
	cout<<"set的size值为:"<<s.size()<<endl;
	cout<<"set的maxsize的值为:"<<s.max_size()<<endl;
	cout<<"set中的第一个元素是:"<<*s.begin()<<endl;
	cout<<"set的最后一个元素是:"<<*s.end()<<endl;
	
	it = s.find(2);
	if(it != s.end())
	{
		cout<<*it<<endl;
	} 
	else
	{
		cout<<"not find it"<<endl;
	}
	
	s.clear();
	if(s.empty())
	{
		cout<<"set为空!!!"<<endl;
	}
	
	
	cout<<"set的size值为:"<<s.size()<<endl;
	cout<<"set的maxsize的值为:"<<s.max_size()<<endl;
	return 0;
}

2. map(映射)

2.1 特点:map就是指两个集合之间的元素相对应的关系。它弥补了普通数组的缺陷(下标只能是0的正整数),它的下标可以是任意类型。集合的第一个元素为关键字(key word),集合的第二个元素为值(value),关键字必须唯一,值不一定唯一。

2.2 操作:

2.3 示例:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	map<string, int>dict;
	dict["Tom"] = 1;
	dict["Jone"] = 2;
	dict.insert(map<string,int>::value_type("Mary",1));
	if(dict.count("Mary"))
	{
		printf("Mary is in class %d\n",dict["Mary"]);
	}
	else
	{
		printf("Mary has no class");
	}
	map<string,int>::iterator it;
	for(it=dict.begin();it != dict.end();it++)
	{
		cout<<it->first<<"is in class"<<it->second<<endl;
	}
	dict.clear();
	return 0;
}

3.  priority_queue(优先队列)

3.1 特点

3.1.1 大顶堆:父亲>=孩子

3.1.2 小顶堆:父亲<孩子

3.1.3 优先队列的底层是由大顶堆或小顶堆来实现

3.1.4 优先队列的队首是最大值或最小值,插入一个数会自动排序,删除一个数也会自动排序

3.2 操作

3.3 示例

#include<bits/stdc++.h>
using namespace std;
priority_queue<int> q;// 第一种定义方法,默认为大顶堆
//priority_queue<int, vector<int>, less<int> > q;//第二种定义方法,大顶堆
//priority_queue<int, vector<int>, greater<int> > q;//第三种定义方法,小顶堆 
int main()
{
	q.push(6); 
	q.push(2);	
	q.push(5);
	q.push(1);
	q.push(2);
	
	while(!q.empty())
	{
		cout<<q.top()<<endl;
		q.pop();
	}
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值