介紹
- map是一種鍵值對容器,第一個數值為關鍵字(key),第二個數值為該元素對應的出現的次數。如果是map,key只會出現一次,如果是unordered_map,無此限制。此外,map會對元素進行排序,unordered_map是無序的。
Map的使用
- 引入頭文件 #include<map>? #include<unordered_map>
- map對象是一個模板類,需要關鍵字和存儲對象兩個模板參數 std::map<int,std::string> person;
- 可以對模板進行類型定義 使其使用更加方便? typedef?std::map<int,std::string> MAP_INT_STRING;??MAP_INT_STRING person;
map添加數據
- 準備操作? std::map<int,std::string> map_element;
- 使用pair? ? ?map_element.insert(std::pair<int,std::string>(1,"Jim"));
- 使用value_type? ? ?map_element.insert(std::map<int,std::string>::value_type(1,"Jim"));
- 使用emplace??map_element.emplace(1,"Jim");
- 使用數組?
map數據的遍歷
- 前向迭代器
for (auto i = m2.cbegin(); i != m2.cend(); ++i) {std::cout << i->first << " " << i->second << std::endl;}
- 反向迭代器? ?使用rbegin和rend替代上面的cbegin 和 cend
- 數組形式 謹慎使用
map中元素的查找
- find() 函數返回一個迭代器指向鍵值為key的元素,如果沒有找到就返回指向map尾部的迭代器
map<int ,string > ::iterator l_it;; l_it = maplive.find(112);if(l_it == maplive.end())cout<<"we do not find 112"<<endl;else cout<<"wo find 112"<<endl;
map中元素的刪除
iterator erase(iterator it) ;//通過一個條目對象刪除
iterator erase(iterator first,iterator last); //刪除一個范圍
size_type erase(const Key&key); //通過關鍵字刪除
clear();//就相當于enumMap.erase(enumMap.begin(),enumMap.end());
參考鏈接
- C++ map用法
- C++ 打印 vector 的幾種方法
?