map,multimap,set,multiset

map和set我们之前介绍过了,现在通过对比说明一下map与multimap,set与multiset

首先map的插入操作,不能插入已经存在的键值,若插入已经存在的键值,则插入无效,可应通过相应的办法来解决:

void TestMap()
{
    map<string, string> dict;
    //[]能修改已存在键值的实值
    dict["left"] = "左边";
    dict["left"] = "剩余";
    //insert不能修改已存在键值的实值
    dict.insert(pair<string, string>("even", "甚至"));
    dict.insert(pair<string, string>("even", "偶数"));
    //通过迭代器修改已存在键值的实值
    dict.insert(pair<string, string>("sort", "xxx"));
    pair<map<string, string>::iterator, bool> ret;
    ret = dict.insert(pair<string, string>("sort", "排序"));
    ret.first->second = "排序";
    map<string, string>::const_iterator Itdict = dict.begin();
    while (Itdict != dict.end())
    {
        cout << Itdict->first << ":" << Itdict->second << endl;
        ++Itdict;
    }
}

结果为:
这里写图片描述
multimap能够插入与已存在数据相同键值的数据:

void TestMultimap()
{
    multimap<string, string>dict;
    dict.insert(pair<string, string>("left", "左边"));
    dict.insert(pair<string, string>("left", "剩余"));
    multimap<string, string>::iterator ItDict = dict.begin();
    while (ItDict != dict.end())
    {
        cout << ItDict->first << ":" << ItDict->second << endl;
        ++ItDict;
    }
}

结果为:
这里写图片描述
set与map一样不能插入与已经存在的数据,而且set只有一个键值,没有重载[]

void TestSet()
{
    set<int> s;
    s.insert(0);
    s.insert(1);
    s.insert(2);
    s.insert(0);
    set<int>::iterator ItS = s.begin();
    while(ItS!=s.end())
    {
        cout << *ItS << " ";
        ItS++;
    }
    cout << endl;
}

结果为:
这里写图片描述
multiset能插入相同的元素

void TestMultiset()
{
    multiset<int> s;
    s.insert(0);
    s.insert(1);
    s.insert(2);
    s.insert(0);
    multiset<int>::iterator ItS = s.begin();
    while (ItS != s.end())
    {
        cout << *ItS << " ";
        ItS++;
    }
    cout << endl;
}

结果为:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值