C++ Map/Multimap 常见用法全解(代码版)

c++map容器提供一个键值对(key/value)容器,map与multimap差别仅仅在于multimap允许一个键对应多个值。对于迭代器来说,可以修改实值,而不能修改key。map会根据key自动排序。map底层是使用红黑树。

Map代码实例:

class sst{
public:
    int x;
    int y;
    sst(int a, int b):x(a), y(b){}
};

bool operator<(const sst& a, const sst& b)
{
    return a.x < b.x;       //代表map中key是sst中的x。
}

void map_test()     //还有一种unordered_map。区别就是不会自动排序。
{
    map mp;
    //插入
    for (int i = 1; i < 10; i++)
        mp[sst(i, i + 1)] = i * 5;
    
    mp.insert(make_pair(sst(2, 5), 50));                //当map中已经有sst.x=2的项。如果再insert sst.x=2的值就会忽略。
    
    for (auto it = mp.begin(); it != mp.end(); it++)    //1-2-5  2-3-10  3-4-15  4-5-20  5-6-25  6-7-30  7-8-35  8-9-40  9-10-45
        cout<first.x<<"-"<first.y<<"-"<second<<"  ";
    cout<first.x<<"-"<first.y<<"-"<second<<"  ";
    cout<second<second<first.x<<" "<second<first.x<<" "<second<first.y<

mutlimap代码实例:

class msst{
public:
    int x;
    int y;
    msst(int a, int b):x(a), y(b){}
};

bool operator<(const msst& a, const msst& b)
{
    return a.x < b.x;       //代表map中key是sst中的x。
}


void multimap_test()
{
    multimap mp;
    //插入
    for (int i = 1; i < 10; i++)
        mp.insert(make_pair(msst(i, i + 1), i * 5));
    
    mp.insert(make_pair(msst(2, 5), 50));               //在multimap中就可以有多个 sst.x=2 的项。
    mp.insert(make_pair(msst(6, 6), 6));
    
    for (auto it = mp.begin(); it != mp.end(); it++)    //1-2-5  2-3-10  2-5-50  3-4-15  4-5-20  5-6-25  6-7-30  6-6-6  7-8-35  8-9-40  9-10-45
        cout<first.x<<"-"<first.y<<"-"<second<<"  ";
    cout<second<second<first.x<<" "<second<first.x<<" "<second<first.y<



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