map函数操作规范

map函数使用

#include<cstdio>
#include<map>
#include<iostream>
#include<string>
#include<utility>
using namespace std;

map<int,string> asd;//建立映射关系 
// int ->key    string ->value
//map是基于key为关键字排序的
/*
	map的基本操作函数:
    C++ maps是一种关联式容器,包含“关键字/值”对

    begin()         返回指向map头部的迭代器

    clear()        删除所有元素

    count()         返回指定元素出现的次数

    empty()         如果map为空则返回true

    end()           返回指向map末尾的迭代器

    equal_range()   返回特殊条目的迭代器对

    erase()         删除一个元素

    find()          查找一个元素

    get_allocator() 返回map的配置器

    insert()        插入元素

    key_comp()      返回比较元素key的函数

    lower_bound()   返回键值>=给定元素的第一个位置

    max_size()      返回可以容纳的最大元素个数

    rbegin()        返回一个指向map尾部的逆向迭代器

    rend()          返回一个指向map头部的逆向迭代器

    size()          返回map中元素的个数

    swap()           交换两个map
    //	map中的swap不是一个容器中的元素交换,而是两个容器所有元素的交换。	

    upper_bound()    返回键值>给定元素的第一个位置

    value_comp()     返回比较元素value的函数
*/
int main()
{
	int n;
	scanf("%d",&n);
	string name;
	int mark;
	while(n--)
	{
		cin>>mark>>name;
		asd.insert(pair<int,string>(mark,name));
	//利用 pair 输入 
	
	//	asd.insert(map<string,int>::value_type(name,mark));
	//利用 value_type 输入 
	
	}
	 
	int nSize=asd.size();
	cout<<nSize<<endl;//输出这个 map 的大小 
	
	// map 的两种遍历方式 
	for(map<int,string>::iterator it=asd.begin();it!=asd.end();it++)
	 cout<<it->first<<" "<<it->second<<endl;//使用迭代器进行遍历
	
//	for(map<int,string>::reverse_iterator it=asd.rbegin();it!=asd.rend();it++) 
//	 cout<<it->first<<" "<<it->second<<endl;//利用反向迭代器进行遍历 
	
	
	//利用 map 自带的成员函数 find() 进行查找    时间复杂度:log n
	map<int,string>::iterator iter;
	iter=asd.find(3);//查找 key 值为3的数 
	if(iter!=asd.end())
	 cout<<"Find, the value is "<<iter->second<<endl<<endl;
	else cout<<"Do not Find"<<endl<<endl;
	
	//利用 map 自带成员函数 erase 来移除项目
	

//	iterator erase(iterator it);//通过一个条目对象删除
//	map<int,string>::iterator it=asd.find(1);
//	asd.erase(it);
	//如果删除了会返回1,否则返回0  
	
//	iterator erase(iterator first,iterator last)//删除一个范围
//	目前就会这一种方法,希望以后还能找到一个更简单的 
/*	int space=0;
	for(map<int,string>::iterator it=asd.begin();it!=asd.end();) 
	{
		++space;
		if(it->first==space) asd.erase(it++);
		else ++it;
	//	if(space==3) break;
	}
*/
	
//	size_type erase(const Key&key);//通过关键字删除
//	asd.erase(1);
	
//	clear()就相当于enumMap.erase(enumMap.begin(),enumMap.end());
//	asd.erase(asd.begin(),asd.end());
//	或者
//	asd.clear();

//	for(map<int,string>::iterator it=asd.begin();it!=asd.end();it++)
//	 cout<<it->first<<" "<<it->second<<endl;//使用迭代器进行遍历

//	map中lower_bound()和upper_bound()的使用

//	map<int,string>::iterator lower,upper;
//	lower=asd.lower_bound(val);
//	upper=asd.upper_bound(val);
//	printf("%d %d",lower->second,upper->second);

	return 0;
}

先更新到这里,以后有什么新的算法再做补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值