multimap学习之创建,初始化,赋值操作operator=, empty,size,max_size

multimap 是关联容器,含有键值对的已排序列表,其功能与map一样,唯一不同的是,它容许多个元素拥有同一键。本篇学习map的创建,初始化,赋值操作operator=, empty,size,max_size

示例代码:

#include <iostream>
#include <map>
#include <string>


using namespace std;

void multimapInit()
{
    string str =  "《凉州词(王翰)》 葡萄美酒夜光杯,欲饮琵琶马上催。醉卧沙场君莫笑,古来征战几人回? ";
    //1.创建multimap
    multimap<int, string> multimap1;
    cout << "multimap1.size = " << multimap1.size() << " multimap1.empty = " << multimap1.empty() << " multimap1.max_size = " << multimap1.max_size() << endl;
    multimap1.insert({1, "persimmon柿子"});
    multimap1.insert({5, "lichee荔枝"});
    multimap1.insert({3, "longan龙眼"});
    multimap1.insert({4, "loquat枇杷"});
    multimap1.insert({3, "shaddock柚子"});
    multimap1.insert({2, "persimmon柿子"});
    cout << "multimap1.size = " << multimap1.size() << " multimap1.empty = " << multimap1.empty() << " multimap1.max_size = " << multimap1.max_size() << endl;
    cout << "multimap1的值为:" << endl;
    multimap<int, string>::iterator iter1;
    for(iter1 = multimap1.begin(); iter1 != multimap1.end(); iter1++)
    {
        std::string tempStr = iter1->second;//这样可以
        cout << iter1->first << ": " << iter1->second << endl;//为什么不能这样输出,加上头文件#include<string>才可以
        //cout << iter1->first << ": " << iter1->second.c_str() << endl;

    }
    //2.列表初始化
    multimap<int, string> multimap2 = {
       {4, "megranate石榴" },
       {2, "durian榴莲"   },
       {6, "mangosteen山竹"   },
       {2, "mango芒果"   },
       {3, "papaya木瓜"   },
       {1, "papaya木瓜"}
    };
    cout << "multimap2.size = " << multimap2.size() << " multimap2.empty = " << multimap2.empty() << " multimap2.max_size = " << multimap2.max_size() << endl;
    cout << "multimap2的值为:" << endl;
    for(auto &val: multimap2)
    {
        cout << val.first << ": " << val.second << endl;
    }
    //3.赋值初始化
    multimap<int, string> multimap3 = multimap2;
    multimap<int, string>::iterator iter3 = multimap3.begin();
    cout << "multimap3.size = " << multimap3.size() << " multimap3.empty = " << multimap3.empty() << " multimap3.max_size = " << multimap3.max_size() << endl;
    cout << "multimap3的值为:" << endl;
    while (iter3 != multimap3.end())
    {
        cout << iter3->first << ": " << iter3->second << endl;
        iter3++;
    }
    //4.拷贝初始化
    multimap<int, string> multimap4(multimap1);
    cout << "multimap4.size = " << multimap4.size() << " multimap4.empty = " << multimap4.empty() << " multimap4.max_size = " << multimap4.max_size() << endl;
    auto iter4 = multimap4.begin();
    cout << "multimap4的值为:" << endl;
    while (iter4 != multimap4.end())
    {
        cout << iter4->first << ": " << iter4->second << endl;
        iter4++;
    }
    //5.范围初始化
    multimap<int, string> multimap5(multimap2.begin(), multimap2.end());
    cout << "multimap5.size = " << multimap5.size() << " multimap5.empty = " << multimap5.empty() << " multimap5.max_size = " << multimap5.max_size() << endl;
    auto iter5 = multimap5.begin();
    cout << "multimap5的值为:" << endl;
    while (iter5 != multimap5.end())
    {
        cout << iter5->first << ": " << iter5->second << endl;
        iter5++;
    }
    //6.移动构造函数
    multimap<int, string> multimap6(std::move(multimap1));
    cout << "multimap6.size = " << multimap6.size() << " multimap6.empty = " << multimap6.empty() << " multimap6.max_size = " << multimap6.max_size() << endl;
    auto iter6 = multimap6.begin();
    cout << "multimap6的值为:" << endl;
    while (iter6 != multimap6.end())
    {
        cout << iter6->first << ": " << iter6->second << endl;
        iter6++;
    }
}

int main()
{
    multimapInit();
    cout << "Hello, world!" << endl;
    return 0;
}

运行结果:

参考:

https://zh.cppreference.com/w/cpp/container/multimap

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值