C++map学习

博主在学习C++时,为深入掌握map进行记录。map可建立映射关系,一个y可对应多个x,但不能多个x对应一个y,有pair、value_type、数组法三种建立映射的方法。还介绍了begin()、end()等一些map的常用语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

map的学习

最近在学c++,一直是在看视频,还是觉得不行,学得有点superficial,所以还是想记录一下。不写纸上了,也没有按顺序。

  1. map是建立一种映射关系,map<pair<y,x>>,一个y可以对应几个x,但是不能几个x对应一个y。
  2. 建立这种映射关系有三种方法,pair,value_type,数组法。
  • pair语法
#include<bits/stdc++.h>
using namespace std;
int main()
{
   	map<int, string> ChampionClub;
  	ChampionClub.insert(pair<int,string>(1,"ARS"));
   	ChampionClub.insert(pair<int,string>(2,"LIV"));
   	ChampionClub.insert(pair<int,string>(3,"MUN"));
    map<int, string>::iterator iter;
    for(iter=ChampionClub.begin();iter!=ChampionClub.end();iter++)
   	cout<<iter->second<<" is "<<iter->first<<endl;
} 

其中iter是定义在map类内的指向对象的指针
如果在以及对key值“1"建立映射为ARS后,再ChampionClub.insert(pair<int,string>(1,"LIV"));就无效,若想再对1建立新的映射,可以先用erase(1)取消1的映射,再建立新的映射/

  • value_type
#include <map>
 
#include <string>
 
#include <iostream>
 
using namespace std;
 
int main()
 
{
 
    map<int, string> mapStudent;
 
    mapStudent.insert(map<int, string>::value_type (1, "student_one"));
 
    mapStudent.insert(map<int, string>::value_type (2, "student_two"));
 
    mapStudent.insert(map<int, string>::value_type (3, "student_three"));
 
    map<int, string>::iterator iter;
 
    for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
 
       cout<<iter->first<<' '<<iter->second<<endl;
 
}

我自己还不是很懂,就直接copy了

  • 数组法
#include<bits/stdc++.h>
using namespace std;
int main()
{
   	map<string,int> ChampionClub;
  	ChampionClub["ARS"]=1;
	ChampionClub["LIV"]=2;
	ChampionClub["TOT"]=3;
    map<string,int>::iterator iter;
    for(iter=ChampionClub.begin();iter!=ChampionClub.end();iter++)
   	cout<<iter->first<<" is "<<iter->second<<endl;
} 

我觉得这个很直接,比较好理解。建立新的映射比较方便,如

#include<bits/stdc++.h>
using namespace std;
int main()
{
   	map<string,int> ChampionClub;
  	ChampionClub["ARS"]=1;
	ChampionClub["LIV"]=2;
	ChampionClub["LIV"]=3;
	ChampionClub["TOT"]=3;
    map<string,int>::iterator iter;
    for(iter=ChampionClub.begin();iter!=ChampionClub.end();iter++)
   	cout<<iter->first<<" is "<<iter->second<<endl;
} 

OUTPUT:
ARS is 1
LIV is 5
TOT is 3
这里就直接改变LIV的映射,整个映射关系中只有3种映射关系。

一些map的语句
  • begin()返回map头部迭代器

  • end()返回尾部迭代器

  • clear()清空所有元素

  • erase()删除一个元素

  • find()查找一个元素

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

  • size()返回map大小

  • count(elem)返回某个元素个数

【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质?你是否想成为一名资深开发人员,想开发别人做不了的高性能程序?你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? 那么C++就是你个人能力提升,职业之路进阶的不二之选。【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署;2.吊打一切关于C++的笔试面试题;3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块基础篇本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。进阶篇本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。提升篇:本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值