C++ Map

Map

类型名称:map<KeyType,T>或者map<KeyType,T,Ordering>,针对一个map。它将KeyType类型的元素关联(映射)到T类型的元素。Ordering用于对元素进行排序,以便存储,如果没有指定,默认为 <

头文件:<map>

已定义的类型:key_type表示键的类型,mapped_type表示键映射到值得类型,size_type

迭代器:iterator、const_iterator、reverse_iterator、const_reverse_iterator,所有迭代器都是双向的,除了const_修饰的都是可变的,begin()、end()、rbegin()、rend()具有预期的行为,一般的增删元素不影响迭代器,除非定位的是要删除的元素。所有的迭代器既非常量迭代器,也非可变迭代器,而是介于两者之间。

成员函数:
m.insert(元素):在map中插入元素,元素具有pair<KeyType,T>类型,返回pair<iterator,bool>类型的值。若插入成功,返回的pair的第二部分为true,而且iterator定位到刚才插入的元素,map中不能有关键字重复的元素。
m.erase(Target_Key):删除键为Target_Key的元素
m.find(Target_Key):返回迭代器,它定位到键为Target_Key的元素,没有找到匹配项就返回m.end()
m.size():返回map中的对的数量
m.empty():判断map是否为空
m1 == m2:如果两个map包含相同的一对返回true,否则返回false

其中的pair<T1,T2>包含值对构成的对象,其中第一个元素具有T1类型,第二个元素有T2类型。例如apair是它的对象,apair.first指向第一个元素,apair.second是第二个元素。

比如定义:multimap<T1,T2> mp;
则map里的元素是如下类型:

struct{
        T1 first;
        T2 second;
    };

mp中的元素是按first为关键字进行排序的;

头文件:<utility>

map的实例:

    #include <iostream>
    #include <map>
    #include <string>
    using namespace std;
    int main( )
    {
        //定义一个string到string类型映射的map
        map<string, string> planets;

        //使用[]操作符来定义键到值的映射
        planets["Mercury"] = "Hot planet";
        planets["Venus"] = "Atmosphere of sulfuric acid";
        planets["Earth"] = "Home";
        planets["Mars"] = "The Red Planet";
        planets["Jupiter"] = "Largest planet in our solar system";
        planets["Saturn"] = "Has rings";
        planets["Uranus"] = "Tilts on its side";
        planets["Neptune"] = "1500 mile-per-hour winds";
        planets["Pluto"] = "Dwarf planet";

        cout << "Entry for Mercury - " << planets["Mercury"]
        << endl << endl;
        //find成员函数的使用
        if (planets.find("Mercury") != planets.end( ))
            cout << "Mercury is in the map." << endl;
        if (planets.find("Ceres") == planets.end( ))
            cout << "Ceres is not in the map." << endl << endl;
        cout << "Iterating through all planets: " << endl;
        //遍历map
        map<string, string>::const_iterator iter;
        for (iter = planets.begin( ); iter != planets.end( ); iter++)
        {
            cout << iter->first << " - " << iter->second << endl;
        }
        return 0;
    }
输出为:

这里写图片描述

类似于set,也有Multimap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值