STL中map-set的使用

map:是一种key/value的模板类(容器),它的底层是实现是红黑树。
map中它将key/value封装成了一个结构体。

template<class K,class V>
struct pair
{
    K first;
    V second;
    pair(const K& key,const V& value)
    :first(key)
    ,second(value)
    {}
};

然后在使用的时候的进行的typedef

typedef pair<const K,T>  value_type;

map的一些常用接口的使用
1.insert
这里写图片描述
第一种直接插入一个值会返回一个pair

#pragma once
#include<iostream>
#include<map>
#include<string>
using namespace std;
void PrintMap(const map<string, string>& dict)
{
    map<string, string>::const_iterator dictIt = dict.begin();
    while (dictIt != dict.end())
    {
        cout << (*dictIt).first << " " << dictIt->second << endl;
        dictIt++;
    }
    cout << endl;
}
void TestMap()
{
    map<string, string> dict;
    pair<map<string, string>::iterator, bool> ptr;
    dict.insert(pair<string, string>("Monday","星期一"));
    dict.insert(pair<string, string>("Tuesday","星期二"));
    dict.insert(pair<string, string>("Wednesday","星期三"));
    ptr=dict.insert(pair<string, string>("Thursday","星期四"));
    PrintMap(dict);
    //ptr=dict.insert(pair<string, string>("Thursday", "星期五"));
    ptr.first->second = "星期五";//ptr是一个pair的结构体,第一个变量是一个迭代器,ptr.first就是map的iterator,然后ptr.first->second就是value;可以进行**修改**
    dict["Monday"]= "一";
    PrintMap(dict);

当然pair的第二个参数是一个bool,所以我们可以ptr.second==false,说明ptr所对应的key/value存在。
map的insert接口可以进行插入、修改、查找。
2.erase
这里写图片描述
删除指定位置的数据

map<string,string>::interate ret=dict.find("Monday");
if(ret!=dict.end())
{
    dict.erase()
}

3.operater[]
这里写图片描述
4.count
这里写图片描述
用来查找ke的元素,并统计与之匹配的个数
set—是key的模板类,基本接口与map一样,用法也差不多大体相同。
可以用来判断集合中一个对象存不存在,当然也可以用来排序,它的底层也是红黑树,中序遍历是有序的。可以用来帮助我们去重。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值