STL【容器】| 【11】map/multimap

21 篇文章 1 订阅

一、map/multimap

map是关联容器,它按照特定顺序存储由key和value组合形成的元素;

  • 键值通常用于对元素进行排序唯一标识;
template < class Key,                                     // map::key_type
           class T,                                       // map::mapped_type
           class Compare = less<Key>,                     // map::key_compare
           class Alloc = allocator<pair<const Key,T> >    // map::allocator_type
           > class map;

在这里插入图片描述

1、常用成员函数

  • begin():返回第一个元素;
  • end():返回最后一个元素后面一个位置;
  • rbegin():返回容器最后一个元素;
  • rend():返回第一个元素前的一个位置;
  • size():元素个数;
  • max_size():最大元素个数;
  • empty():判断是否为空;
  • emplace():插入元素,能够自动构造对象;
  • emplace_hint():根据位置插入;
  • insert():删除指定值的元素;
  • insert(pos, elem):在pos插入elem
  • insert(pos, n, elem):pos位置插入n个元素elem;
  • erase(cmp):删除满足条件的元素;
  • erase():删除一个或几个元素;
  • swap():交换容器;
  • clear():删除双端队列容器中的所有元素;
  • key_comp():返回比较对象;
  • value_comp():返回比较对象;
  • find():获取元素的迭代器;
  • count():查看是否具有特定值的元素;
  • lower_bound():将迭代器返回到下限;
  • upper_bound():将迭代器返回到上限;
  • equal_range():获取相等元素的范围;
  • []:访问元素;
  • at():访问元素;

2、案例

#include <iostream>
#include <string>
#include <map>

using namespace std;

map<int, string> mp = {{1, "jie"}, {2, "io"}, {3, "jj"}}; 

int main() {
	
	// ret:178956970 
	//cout << "max_size: " << mp.max_size() << endl;
	
	// ret: 4
	//mp.insert(std::pair<int, string>(100, "qq"));
	//cout << "size: " << mp.size() << endl;
	
	// ret: 4
	//mp.insert(mp.begin(), std::pair<int, string>(100, "qq"));
	//cout << "size: " << mp.size() << endl;
	
	// ret: 2
	//mp.erase(1);
	//cout << "size: " << mp.size() << endl;
	
	// ret: 7 8
	//map<int, string> mp2 = {{7, "ii"}, {8, "oo"}};
	//mp.swap(mp2);
	//for(auto& i:mp) {
	//	cout << i.first << " " << i.second << " ";
	//}
	
	//mp.clear();
	//for(auto& i:mp) {
	//	cout << i << " ";
	//}
	
	
	//mp.emplace(100, "ll");
	//mp.emplace_hint(mp.begin(), 110, "oo");
	//for(auto& i:mp) {
	//	cout << i << " ";
	//}
	
	
	// ret: io
	//auto it = mp.find(2);
	//if(it != mp.end())
	//	cout << it->second << endl;
	
	// ret:find!!!
	//if(mp.count(1)!=0)
	//	cout << "find!!!" << endl;
	//else 
	//	cout << "no!!!" << endl;

	// ret:jie
	//auto it = mp.lower_bound(1);
	//cout << it->second << endl; 
	 
	// ret:jie
	//auto it = mp.upper_bound(1);
	//cout << it->second << endl; 
	
	// ret: 
	//auto it = mp.equal_range(2);
	//cout << "lower_bound:" << it.first->first << " " << it.first->second << endl;
	//cout << "upper_bound:" << it.second->first << " " << it.second->second << endl;		 
	 
	// ret: jie
	//cout << mp[1] << endl;
	 
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jxiepc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值