C++ map用法(1)

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

2. map 对象是一个模版类,需要关键字和存储对象两个模版参数

 

std::map<int , std::string> person;

3. 可以对模版进行类型定义使其使用方便

 

typedef std::map<int , std::string> MAP_INI_STRING;
MAP_INI_STRING person;



### **Map的构造**


**1、map最基本的构造函数;**



std::map<int , std::string> mapPerson;


**2、map添加数据;**


**1)insert函数插入pair数据**



std::map<int , std::string> mapPerson;
mapPerson.insert(pair<int,string>(1,“Jim”));


**2)insert函数插入value\_type数据**



mapPerson.insert(std::map<int, std::string>::value_type (2, “Tom”));


**3)用数组方式插入数据**



mapPerson[3]=“Jerry”;


##### 3、Map数据的遍历


三种最常用的遍历方法:


**1)前向迭代器**



std::map<int ,std::string>::iterator it;
std::map<int ,std::string>::iterator itEnd;
it = mapPerson.begin();
itEnd = mapPerson.end();
while (it != itEnd) {
cout<first<<’ '<second<<endl;
it++;
}


#### 2)反向迭代器



std::map<int, string>::reverse_iterator iter;
for(iter = mapPerson.rbegin(); iter != mapPerson.rend(); iter++){
cout<first<<" "<second<<endl;
}


#### 3)数组形式



mapPerson.insert(std::map<int, std::string>::value_type (1, “Tom”));
mapPerson[2]= “Jim”;
mapPerson[3]= “Jerry”;
int nSize = mapPerson.size();
for(int n=1; n<= nSize; n++){
string::fromstdstring(mapPerson[n]);
string::fromstdstring(mapPerson[n]);
}


三种都是遍历,建议使用前向迭代器,慎用使用数组形成(角标开始位置谨慎)。


**4、map中元素的查找:**


find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。        



map<int,string >::iterator l_it;
l_it=maplive.find(112);
if(l_it==maplive.end()){
cout<<“we do not find 112”<<endl;
}
else{
cout<<“wo find 112”<<endl;
}


**5、map中元素的删除:**


 如果删除112;​​​​​​​



iterator erase(iterator it);//通过一个条目对象删除
iterator erase(iterator first,iterator last);//删除一个范围
size_type erase(const Key&key);//通过关键字删除
clear();//就相当于enumMap.erase(enumMap.begin(),enumMap.end());


**6、map中 swap的用法:**


  Map中的swap不是一个容器中的元素交换,而是两个容器交换;


  示例:​​​​​​​



#include
#include
using namespace std;
int main( )
{
map <int, int> m1, m2, m3;
map <int, int>::iterator m1_Iter;
m1.insert ( pair <int, int> ( 1, 10 ) );
m1.insert ( pair <int, int> ( 2, 20 ) );
m1.insert ( pair <int, int> ( 3, 30 ) );
m2.insert ( pair <int, int> ( 10, 100 ) );
m2.insert ( pair <int, int> ( 20, 200 ) );
m3.insert ( pair <int, int> ( 30, 300 ) );
cout << “The original map m1 is:”;
for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ ){
cout << " " << m1_Iter->second;
cout << “.” << endl;
// This is the member function version of swap
// m2 is said to be the argument map; m1 the target map
m1.swap( m2 );
cout << “After swapping with m2, map m1 is:”;
for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
cout << " " << m1_Iter -> second;
cout << “.” << endl;
cout << “After swapping with m2, map m2 is:”;
for ( m1_Iter = m2.begin( ); m1_Iter != m2.end( ); m1_Iter++ ){
cout << " " << m1_Iter -> second;
cout << “.” << endl;
// This is the specialized template version of swap
swap( m1, m3 );
cout << “After swapping with m3, map m1 is:”;
for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ ){
cout << " " << m1_Iter -> second;
cout << “.” << endl;
}
}
}

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值