C++ Map

Map

类型名称: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 mp;
则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;
    }
输出为:

C++ Map_第1张图片

类似于set,也有Multimap

你可能感兴趣的:(C++)