multimap

1、multimap的概念
multimap和map的唯一差别就是map中的key必须是唯一的,而multimap中的key是可以重复的,其底层结构及方法接口与map完全相同。

2、multimap的基本操作
使用map时,必须包含头文件以及std标准命名空间。
(1)insert():插入数据。
(2)erase():删除数据。
(3)find():查找数据。
(4)clear():数据的清空。
(5)empty():数据的判空。
(6)size():获取有效元素的大小。
(7)count():获取键值中查找元素的个数。如果有返回1,否则返回0。
(8)rbegin():在反向迭代器中表示起始元素。
(9)rend():在反向迭代器中表示末尾元素。
(10)operator[key]:通过键值(key)获取该key对应的value。
(11)at(key):通过键值(key)获取该key对应的value。
(12)lower_bound(val):返回容器中第一个值【大于或等于】val的元素的iterator位置。
(13)upper_bound(val):返回容器中第一个值【大于】。
(14)equal_rand(n):返回键值n和n+1的元素。
【例】

#include<iostream>
#include<map>
#include<stdlib.h>

using namespace std;

void TestMultimap1()
{
    map<int, int> map1;
    map1.insert(pair<int, int>(1, 10));
    map1.insert(make_pair(2, 20));
    map1.insert(make_pair(3, 30));
    map1.insert(make_pair(4, 40));
    map1.insert(make_pair(5, 50));
    cout << "map中的元素的个数为:" << map1.size() << endl;

    //尝试插入key值相同,但是value不同的元素
    map1.insert(make_pair(2, 2));
    cout << "插入key值相同,但是value不同的元素后,map中的元素的个数为:" << map1.size() << endl;
    cout << "multimap中的元素有:" << endl;
    multimap<int, int> multi1;
    for (int i = 0; i < 5; i++)
    {
        multi1.insert(make_pair(i, i));
    }
    multi1.insert(make_pair(1, 10));
    multi1.insert(make_pair(2, 20));
    multi1.insert(make_pair(2, 200));
    multimap<int, int>::iterator iter = multi1.begin();
    while (iter != multi1.end())
    {
        cout << iter->first << "--->" << iter->second << endl;
        ++iter;
    }
    cout << "在multimap中key为2的元素个数:" << multi1.count(2) << endl;
    iter = multi1.lower_bound(2);
    cout << "multi1.lower_bound(2):" << iter->first << "--->" << iter->second << endl;
    iter = multi1.upper_bound(2);
    cout << "multi1.upper_bound(2):" << iter->first << "--->" << iter->second << endl;
    typedef multimap<int, int>::iterator Iter;
    pair<Iter, Iter> ret = multi1.equal_range(2);
    cout << (ret.first)->first <<"--->" << (ret.first)->second << endl;
    for (auto it = ret.first; it != ret.second; it++)
     {
        cout << it->first << "--->" << it->second << endl;
    }
    cout << (ret.second)->first << "--->" << (ret.second)->second << endl;
}
 
int main()
{
    TestMultimap1();
    system("pause");
    return 0;
}

运行结果为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值