map容器

在讲述map容器之前先来说一下序列式容器,序列式容器是存放数据的一个绝佳的地方,但是其也存在一定的缺陷,就是它的访问机制并不高效,这样就出现了后续的关联式容器
关联式容器分为map,multimap,set multiset这几种
首先先来说一下map容器:
map里面存放的一个元素分为两个部分一个为key,一个为value用key作为索引目录,来索引value。
map共有四种类型:
1.map<K,T>保存的是pair<cosnt K,T>的元素,pair<const K,T>封装了一对键对象,键的类型为K,对象的类型为T,每个键都是唯一的,所以不允许有重复的键,默认使用less来进行排序。
2.multimap<K,T>和map类似,其键值也必须是可比较的,也会按照一定顺序排列,但是其一个键值K可以对应多个对象。
3.unordered_map<K,T>和map不一样,它的顺序并不是按照键值大小决定的,而是由键值的哈希值决定的。unordered_map<K,T>不允许有一个重复的键。
4.unordered_multimap<K,T>也是通过键值生成的哈希值来确定对象,但它一个键值可以对应多个对象。

#include<iostream>
#include<map>
#include<string>
#include<utility>
using std::string;
using std::map;
using std::cout;
using std::endl;
int main()
{
	map<int,string>m1;//使用默认构造函数
	m1[75] = "John Smith";
	m1[51] = "Bill Hook";
	m1[41] = "Ann Gora";
	m1[21] = "Jane Johnes";
	cout << "m1:" << endl;
	for (map<int, string>::iterator it = m1.begin(); it != m1.end(); it++)
	{
		cout << it->first << "   "<<it->second << endl;
	}
	map<int, string> m2{ std::make_pair(12, "John Smith"), std::make_pair(11, "Bill Hook"), std::make_pair(14, "Ann Gora"),
		std::make_pair(24, "Jane Johnes") };//默认在构造函数时赋值
	cout << "m2:" << endl;
	for (map<int, string>::iterator it = m2.begin(); it != m2.end(); it++)
	{
		cout << it->first << "   " << it->second << endl;
	}
	//map的插入方式
	//1.使用insert插入
	m1.insert(std::make_pair(11, "hello"));
	auto pr = std::make_pair(12, "hello");
	m1.insert(pr);
	//2.在mmake_pair中定插入的类型
	m1.insert(std::make_pair<int, string>(1,string("hello1")));
	
	map<int, string>::iterator mit;
	mit = m1.begin();
	mit->second = "Jone";
	m1.erase(1);//map容器的删除。
	cout << "m1:" << endl;
	for (map<int, string>::iterator it = m1.begin(); it != m1.end(); it++)
	{
		cout << it->first << "   " << it->second << endl;
	}
    
	system("pause");
	return 0;
}

  //1、通过组(pair)的方式进行插入,pair不是map里面的结构,是std里面的一个模板
	m.insert(std::pair<int, double>(4, 0.33));
	//2、通过map内部定义的一个结构来进行插入
	m.insert(map<int, double>::value_type(4, 0.21));
	//3、通过std里面的一个函数模板来进行元素的插入
	m.insert(std::make_pair(7, 0.098));

set和map的内存结构是一致的,如果有一个值既是key,也可以是value,就用set
使用计算机来解决实际问题,分析问题所涉及的数据、合理的组织这些数据,规划解决问题的算法
算法:解决问题的具体流程
空间复杂度,时间复杂度
空间复杂度:指令空间、数据空间、环境栈空间
时间复杂度:运行时间

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值