在c++中,map是一个非常常用的容器,它可以存储
一、使用insert()函数进行初始化
map容器的insert()函数可以将一个
mapm; m.insert(make_pair("hello", 1)); m.insert(make_pair("world", 2));
上述代码就可以将两个
除了使用make_pair()函数进行初始化以外,还可以使用map容器自带的insert()函数,下面是示例代码:
mapm; m.insert({"hello", 1}); m.insert({"world", 2});
这种方式也非常简洁明了。
二、使用初始化列表进行初始化
c++11标准引入了初始化列表的概念,可以轻松地初始化map。
mapm = {{"hello", 1}, {"world", 2}};
上述代码就可以将两个
另外,也可以用花括号{}来初始化,示例代码如下:
mapm{{"hello", 1}, {"world", 2}};
三、使用make_pair()函数进行初始化
make_pair()函数是c++中一个非常方便的函数,可以把两个数据组成一个pair类型的对象。
示例代码如下:
mapm; m.insert(make_pair("hello", 1)); m.insert(make_pair("world", 2));
make_pair()的第一个参数是key,第二个参数是value。
四、使用数组进行初始化
使用数组来初始化map也是一个非常好的方式。
pairarr[] = {{"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()函数,能够将一个
mapm; m.emplace("hello", 1); m.emplace("world", 2);
上述代码也可以实现将两个
七、使用自定义比较函数进行初始化
c++中的map容器默认使用less进行比较,但是也可以使用自定义比较函数。
示例代码如下:
bool cmp(const string &a, const string &b) { // 自定义比较函数 return a.length() < b.length(); } mapm(cmp); // 指定自定义比较函数 m.insert({"hello", 1}); m.insert({"world", 2});
上述代码使用自定义比较函数来比较map中的元素,需要使用decltype关键字来指定比较函数的类型。
八、小结
本文从多个方面阐述了c++中map容器的初始化方式,包括使用insert()函数、初始化列表、make_pair()函数、数组、迭代器、emplace()函数以及自定义比较函数。
使用不同的初始化方式可以根据实际情况来选择,提高代码的可读性和可维护性。