您的位置:

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

在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()函数以及自定义比较函数。

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