在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<pair> 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()函數以及自定義比較函數。
使用不同的初始化方式可以根據實際情況來選擇,提高代碼的可讀性和可維護性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/298258.html