类型名称:map
或者map
,针对一个map。它将KeyType类型的元素关联(映射)到T类型的元素。Ordering用于对元素进行排序,以便存储,如果没有指定,默认为 <
头文件:
已定义的类型:key_type
表示键的类型,mapped_type
表示键映射到值得类型,size_type
迭代器:iterator、const_iterator、reverse_iterator、const_reverse_iterator
,所有迭代器都是双向的,除了const_修饰的都是可变的,begin()、end()、rbegin()、rend()
具有预期的行为,一般的增删元素不影响迭代器,除非定位的是要删除的元素。所有的迭代器既非常量迭代器,也非可变迭代器,而是介于两者之间。
成员函数:
• m.insert(元素)
:在map中插入元素,元素具有pair
类型,返回pair
类型的值。若插入成功,返回的pair的第二部分为true,而且iterator定位到刚才插入的元素,map中不能有关键字重复的元素。
• m.erase(Target_Key)
:删除键为Target_Key的元素
• m.find(Target_Key)
:返回迭代器,它定位到键为Target_Key的元素,没有找到匹配项就返回m.end()
• m.size()
:返回map中的对的数量
• m.empty()
:判断map是否为空
• m1 == m2
:如果两个map包含相同的一对返回true,否则返回false
其中的pair
包含值对构成的对象,其中第一个元素具有T1类型,第二个元素有T2类型。例如apair是它的对象,apair.first
指向第一个元素,apair.second
是第二个元素。
比如定义:multimap
则map里的元素是如下类型:
struct{
T1 first;
T2 second;
};
mp中的元素是按first
为关键字进行排序的;
头文件:
map的实例:
#include
#include
#include
using namespace std;
int main( )
{
//定义一个string到string类型映射的map
map<string, string> planets;
//使用[]操作符来定义键到值的映射
planets["Mercury"] = "Hot planet";
planets["Venus"] = "Atmosphere of sulfuric acid";
planets["Earth"] = "Home";
planets["Mars"] = "The Red Planet";
planets["Jupiter"] = "Largest planet in our solar system";
planets["Saturn"] = "Has rings";
planets["Uranus"] = "Tilts on its side";
planets["Neptune"] = "1500 mile-per-hour winds";
planets["Pluto"] = "Dwarf planet";
cout << "Entry for Mercury - " << planets["Mercury"]
<< endl << endl;
//find成员函数的使用
if (planets.find("Mercury") != planets.end( ))
cout << "Mercury is in the map." << endl;
if (planets.find("Ceres") == planets.end( ))
cout << "Ceres is not in the map." << endl << endl;
cout << "Iterating through all planets: " << endl;
//遍历map
map<string, string>::const_iterator iter;
for (iter = planets.begin( ); iter != planets.end( ); iter++)
{
cout << iter->first << " - " << iter->second << endl;
}
return 0;
}
输出为:
类似于set,也有Multimap