C++中的map

1、map类似与C#中的字典,存储键值对
2、map重载了[],所以可以直接使用索引器访问其值,索引器中是键。
3、map中的条目是iterator类型,iterator被定义为map容器中的条目类型。iterator实际是一个指针,可以++,–。
4、map.begin()返回第一个条目,map.end()返回最后一个条目的下一个条目。
5、map中存储条目的顺序是有序的,即存储的顺序和取出的顺序是一致的。
6、iterator.first返回当前条目的键,iterator.sencond返回当前条目的值。

#include <iostream>
#include <map>

typedef std::map<int ,std::string> MAP_INT_STRING;

void printMap(MAP_INT_STRING &myMap)
{
    MAP_INT_STRING::iterator it;
    for (it = myMap.begin() ; it != myMap.end(); ++it)
    {
        printf("%d = %s \n",it->first,it->second.c_str());
    }
}

void main()
{
    MAP_INT_STRING enumMap;

    //map重载了[]
    enumMap[-1] = "one";
    enumMap[1] = "two";
    enumMap[1] = "two edit";//修改map中的条目

    enumMap[2] = "three";
    enumMap[3] = "four";
    enumMap[4] = "five";
    enumMap[5] = "six";

    //enumMap.insert(make_pair(2,"three"));
    //enumMap.insert(std::pair<int,std::string>(6, "hello"));

    std::cout<<"map中记录个数:"<<enumMap.size()<<std::endl;

    //map中的条目数据是顺序存储的,被称作为一个sequence。
    //在这里需要提到的是begin()和end()两个成员,分别代表map对象中第一个条目和最后一个条目,这两个数据的类型是iterator,iterator被定义为map中条目的类型
    MAP_INT_STRING::iterator it1 = enumMap.begin();
    MAP_INT_STRING::iterator it2 = enumMap.end() ;
    it2--;//其中enumMap.end()指向的是最后一个条目的下一个条目。
    printf("enumMap.begin():%d == %s \n",it1->first,it1->second.c_str());
    printf(" enumMap.end():%d == %s \n",it2->first,it2->second.c_str());

    printf("===============查========================\n");

    //find(),map是有顺序存储数据的
    int nFindKey = 1 ;
    MAP_INT_STRING::iterator it;//条目类型变量,实际上是一个条目指针
    it=enumMap.find(nFindKey);
    if(it==enumMap.end())//enumMap.end()表示map中的最后一个条目
    {
        std::cout<<"no find it"<<std::endl;
    }
    else
    {
        //std::cout不能输出std::string类型
        printf("find it : %d  ==  %s\n",it->first,it->second.c_str());
    }

    printMap(enumMap);

    printf("===============删========================\n");

    //删除
    enumMap.erase(1);//删除 key=1 的条目
    //enumMap.erase(it);
    //enumMap.erase(enumMap.find(1),enumMap.find(4));//包括第一个,不包括最后一个  [begin,end)
    //enumMap.erase(enumMap.begin(),enumMap.end());//删除所有 <=>  enumMap.clear();

    printMap(enumMap);

    std::cout<<"map中记录个数:"<<enumMap.size()<<std::endl;

    system("pause");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值