map、pair、stack、queue的学习2020-10-27

今天 昨天(老懒狗了)做题顺便学了下map和pair的使用方法

map表(就像pair的数组)

头文件#include< map>
使用:

创建

map<key,value> mapname;//第一种方法
mapname[key]=value;//这个操作可以覆盖之前同一key的value

map<key,value> mapname={//第二种方法
{key1,value1},
{key2,value2},
...
{keyn,valuen}
}//后面也可以补“mapname[key]=value;”再进行补充。

mapname.insert(map<key, value>::value_type(eg1, eg2)//第三种方法
mapname.insert(pair<t1, t2>(eg1, eg2)

实践

class Solution {//独一无二的出现次数
public:
    bool uniqueOccurrences(vector<int>& arr) {
		map <int,int> m;
		for(int i=0;i<arr.size();i++)
		{
			map<int,int>::iterator iter=m.find(arr[i]);
			if(iter!=m.end())//查找有无此元素,若iter指向末尾,则无
				m[arr[i]]=m[arr[i]]+1;//这样可以直接覆盖之前键值对
			else
				m[arr[i]]=1;//直接添加一个键值对
		}
		map <int,int> mm;
		for(map<int,int>::iterator it=m.begin();it!=m.end();it++)//迭代器it是指针
		{
			map<int,int>::iterator iter=mm.find((*it).second);
			if(mm.count((*it).second)==0)//map中同一键值只能出现一次,所以count不是1就是0
				mm[(*it).second]=1;
			else
				return false;
		}
		return true;
    }
};
//map.count(x)很常用

pair键值对

头文件 #include< utility>
使用:

创建

pair<t1,t2>p1;//创建空对象,对象类型不必一样
p1.first=eg1;
p1.second=eg2;
pair<t1,t2>p2(eg1,eg2);//创建对象
pair<t1,t2>p2;//这两行和上一行效果一样
p2=make_pair(eg1,eg2);
pair<t1,t2>p3;
p3=p1;
pair<t1,t2>p4=p1;//两种赋值方法

queue队列 先进先出

头文件#include< queue>
queue <类型> q;
几个函数:
q.empty() 队列空,则返回1,否则返回0;
q.size()返回q的元素个数;
q.push(x)将x传入q的末尾;
q.pop()弹出第一个元素,无返回值;
q.front()返回首位元素;
q.back()返回末位元素。

根据vector做的stack堆栈 后进先出

#include<vector>
template <typename T> class Stack: public Vector<T>
{
	public:
		void push(T const & e)
		{
			insert(size(),e);
		}
		T pop()//一般的pop是void,没有返回值。 
		{
			return remove(size()-1);
		} 
		T & top()
		{
			return (*this)[size()-1];
		}
		bool empty()
		{
			if(size)
				return false;
			else
				return true;
		} 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值