c++ map学习心得

最近用到了STL中的map,感觉很方便,而且有点也很多,这里总结一下进来的学习心得。

 

map是c++的一个标准容器,遇到一对一关系的编程,使用它非常方便。

具体的说map是一类关联式容器,对它进行插入和删除操作时速度快,方便。

使用的时候需要建立起 key和value的对应关系,一个key对应一个value。建立起来之后,可以修改value的值

但不可以再改变key的值。

1,头文件:

#include <map> //STL头文件都没有扩展名.h

using namspace std;

2,定义:map<int,CString>  my_map;

如果没有指出命名空间,就需要这样定义:str:map<int,CString>  my_map;

这时,int相当于是一个索引,或者理解成数组的下标,每一个int值对应一个CString值

另外对容器的操作,都需要用到对每一对关联的一个指针,就是对条目的定义:

map<int,CString>::iterator  item;     //在函数的返回值中会用到

4,插入元素:

因为map有key和value的一对一关联关系,那么可以将它看做数组,这样,插入就变得非常简单:

my_map[1]="number 1";

my_map[2]="number 2";

1,2就分别与number 1 , number 2相关联,在my_map中就存在两条记录

这样非常好理解,却存在一个性能上的问题。每插入一个元素,都要先查找map中有没有这个key值的项

如果没有,就插入一个新的项,并先给这个项的第二个元素赋值为空字符串,然后再将它赋值为 number 1

这样就增大了开销

当然,我们也有更好的办法来避免这种开销:使用insert函数

my_map.insert(map<int,CString>::value_type(1,"number 1"));

5,查找元素 find

(记得我们上边定义的item吧)

item = my_map.find(n);    //这里的n为int类型,因为my_map是int与CString对应的

if(item == my_map.end())     //说明在my_map中没有找到key值为n的项

{

      //do something

}

else       //说明找到了key为n 的项

{

     //do other thing

}

如果找到了,那么怎么得到这一项的字符串呢,可以使用item

item->first       //为key值

item->second //就是我们想要得到的value

6,删除元素  erase

iterator erase(iterator it); //通过一个条目对象删除

iterator erase(iterator first, iterator last); //删除一个范围

size_type erase(const Key& key); //通过关键字删除

例如:item = my_map.erase(n);

my_map.erase(my_map.begin(),my_map.end());

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值