浏览器标题切换
浏览器标题切换end

C++ STL - map的使用

输出带空格格式

控制格式,输出格式:1 2 3 4 5(中间有空格,末尾无空格):

auto it=mp.begin();
cout<<it->second;
while(++it!=mp.end())
    cout<<" "<<it->second;

输出首尾元素

输出map中最后一个元素和第一个元素:

map<string,int>mp1; //姓名 分数
map<string,string>mp2; // 姓名 学号

// 输出最后一个元素
auto it1=mp1.rbegin();   // 不能用end,会没有输出
string s1=it1->first;
cout<<s1<<" "<<mp2[s1]<<endl;

// 输出第一个元素
auto it2=mp1.begin();
string s2=it2->first;
cout<<s2<<" "<<mp2[s2]<<endl;

正序遍历所有元素

三种写法:

// 定义map类型
map<int,int>mp;
....

// 定义迭代器 写法1
map<int, int>::iterator iter = mp.begin();
while (iter!=map1.end())
{
  cout << iter->first << "***" << iter->second << endl;
  iter++;
}

// 定义迭代器 写法2
map<int, int>::iterator iter;
for (iter = mp.begin(); iter != mp.end(); iter++) 
  cout << iter->first << "***" << iter->second << endl;

// 定义迭代器 写法3
// 或者使用 C++11 auto关键字 自动识别map类型
for (auto iter = mp.begin(); iter != mp.end(); iter++)
  cout << iter->first << "***" << iter->second << endl;

倒序遍历所有元素

// 定义map类型
map<int,int>mp;
....

// 定义迭代器
map<int, int>::reverse_iterator iter;
for (iter = mp.rbegin(); iter != mp.rend(); iter++)
  cout << iter->first << "***" << iter->second << endl;

count函数

语法:mp.count(需要查找的元素key),存在返回1,不存在返回0。(判断map中key是否存在)

map<int,int> mp; 
for(int i=0;i<n;i++)
{
  if(mp.count(a[i])) ...
}

find函数

使用find,返回的是被查找元素的位置,没有则返回map.end()
语法:mp.find(需要查找的元素key),存在则返回元素下标,否则返回 map.end()

posted @ 2021-03-07 14:57  抓水母的派大星  阅读(271)  评论(0编辑  收藏  举报