std::map的一些用法

一. 下标法的使用

所谓下标法, 就是类似数组那样子, 而在std:::map中, 下标就是你定义的key.

例子:

#include <map>
#include <string>

struct STTT
{
	int nI;
};

typedef std::map<std::string, STTT*> StringSTTTPMap;
typedef StringSTTTPMap::iterator  StringSTTTPMapIterator;


StringSTTTPMap mm;

STTT* p1 = new STTT;
p1->nI = 1;
STTT* p2 = new STTT;
p2->nI = 2;

mm["222"] = p1;
mm["111"] = p2;

// 这个用法很好用, 可以在
// "如果已经存在, 则不能改变; 如果不存在,则加入"的
// 场景下使用
if(0 == mm["333"])
{
	mm["333"] = new STTT;
}

这个例子利用了map的一些特性:

1. 列用map, 对key排序.

2. 下标法使用时, 如果该下标不存在, 则map会自动添加, 这种情况特别适合在在value是指针的情况下使用, 因为如果是值的话, 涉及到对象的拷贝, 而指针的话就只是指针的拷贝而已, 当然, 你需要管理好你的指针.(我很喜欢这样用)


二. std::pair, insert, 遍历map中所有数据

#include <map>
#include <string>

struct STTT
{
	int nI;
};
typedef std::map<std::string, STTT*> StringSTTTPMap;
typedef StringSTTTPMap::iterator  StringSTTTPMapIterator;

StringSTTTPMap mm;

STTT* p1 = new STTT;
p1->nI = 1;
STTT* p2 = new STTT;
p2->nI = 2;

// insert插入, 插入的是std::pair
mm.insert(std::pair<std::string, STTT*>("222", p1));
mm.insert(std::pair<std::string, STTT*>("111", p2));

StringSTTTPMapIterator  iter;
for(iter = mm.begin(); iter != mm.end(); iter++)
{
	// pair的first和second
	std::cout << iter->first << ”   ” << iter->second << std::end;
}

三. 自定义排序

你可以自定义key的排序,  暂时没验证.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值