千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > c++中map的初始化方式详解

c++中map的初始化方式详解

来源:千锋教育
发布人:xqq
时间: 2023-11-24 06:24:54 1700778294

在c++中,map是一个非常常用的容器,它可以存储键值对,能快速地根据key进行查找,是一个非常高效的数据结构。本文将从多个方面来详细介绍map的初始化方式。

一、使用insert()函数进行初始化

map容器的insert()函数可以将一个键值对插入到map中,使用起来非常简单。


    map m;
    m.insert(make_pair("hello", 1));
    m.insert(make_pair("world", 2));

上述代码就可以将两个键值对插入到map中。

除了使用make_pair()函数进行初始化以外,还可以使用map容器自带的insert()函数,下面是示例代码:


    map m;
    m.insert({"hello", 1});
    m.insert({"world", 2});

这种方式也非常简洁明了。

二、使用初始化列表进行初始化

c++11标准引入了初始化列表的概念,可以轻松地初始化map。


    map m = {{"hello", 1}, {"world", 2}};

上述代码就可以将两个键值对插入到map中。

另外,也可以用花括号{}来初始化,示例代码如下:


    map m{{"hello", 1}, {"world", 2}};

三、使用make_pair()函数进行初始化

make_pair()函数是c++中一个非常方便的函数,可以把两个数据组成一个pair类型的对象。

示例代码如下:


    map m;
    m.insert(make_pair("hello", 1));
    m.insert(make_pair("world", 2));

make_pair()的第一个参数是key,第二个参数是value。

四、使用数组进行初始化

使用数组来初始化map也是一个非常好的方式。


    pair arr[] = {{"hello", 1}, {"world", 2}};
    map m(arr, arr+2);

上述代码将一个pair类型的数组传递给map,并使用数组的开始和结束迭代器来初始化map。

五、使用迭代器进行初始化

借助迭代器,我们可以方便地将其他容器的数据复制到map中。

示例代码如下:


    vector> v{{"hello", 1}, {"world", 2}};
    map m(v.begin(), v.end());

上述代码将vector容器中的数据复制到map中,使用起来非常方便。

六、使用emplace()函数进行初始化

emplace()函数是c++11中新增加的函数,功能类似于insert()函数,能够将一个键值对插入到map中。


    map m;
    m.emplace("hello", 1);
    m.emplace("world", 2);

上述代码也可以实现将两个键值对插入到map中。

七、使用自定义比较函数进行初始化

c++中的map容器默认使用less进行比较,但是也可以使用自定义比较函数。

示例代码如下:


    bool cmp(const string &a, const string &b)
    {
        // 自定义比较函数
        return a.length() < b.length();
    }
    map m(cmp); // 指定自定义比较函数
    m.insert({"hello", 1});
    m.insert({"world", 2});

上述代码使用自定义比较函数来比较map中的元素,需要使用decltype关键字来指定比较函数的类型。

八、小结

本文从多个方面阐述了c++中map容器的初始化方式,包括使用insert()函数、初始化列表、make_pair()函数、数组、迭代器、emplace()函数以及自定义比较函数。

使用不同的初始化方式可以根据实际情况来选择,提高代码的可读性和可维护性。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT