C++ map容器-57-对组和map构造/赋值

这篇开始学习C++中的Map容器,也叫字典,字典中的元素是键值对形式存在的。在学习map容器之前,我们先学习C++中的一个对组的小知识点。然后学习map容器的构造和赋值相关API。

 

1.对组

概念:成对出现的数据,利用对组可以返回两个数据。这个特点有点类似python中的元组。

对组的两种创建方式

下面写简单的练习代码,练习对组的两种创建方式,和如何获取对组中两组数据的方法。

#include <iostream>
#include <string>
using namespace std;

void test01()
{
    // 对组创建方式1,有点像默认无参构造
    pair<string, int> p("Anthony", 23);

    // 对组创建方法2
    pair<string, int> p2 = make_pair("Tom", 18);

    // 如何访问对组中值
    cout << "Name: " << p.first << " Age: " << p.second << endl;
    cout << "Name: " << p2.first << " Age: " << p2.second << endl;
}

int main()
{
    test01();
    system("pause");
    return 0;
}

运行结果

 

2.map的构造和赋值

上面有了对组的理解,然后从对组概念过度到字典容器中键值对。

概念:

  • map中所有的元素都是pair
  • pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)
  • 所有元素都会根据元素的键值自动排序

本质
map/multimap属于关联式容器,底层结构是用二叉树实现。

优点:
可以根据Key值快速找到value值

map和multimap的区别

  • map不允许容器中有重复的key值元素
  • multimap允许容器中有重复的key值元素

下面看看Map容器的构造相关API

构造和赋值相关函数原型

一个默认构造和拷贝构造,形式和前面其他容器一样。

#include <iostream>
#include <string>
#include <map>
using namespace std;

void printMap(map<string, int>& m)
{
    for(map<string, int> ::iterator it = m.begin(); it != m.end(); it++)
    {
        cout << "Key= " << (*it).first << " ,Value= " << (*it).second << endl;
    }
}

void test01()
{
    // map容器的构造
    map<string, int> m;

    // map容器添加元素
    m.insert(pair<string, int>("Tom", 18));
    m.insert(pair<string, int>("Anthony", 23));
    m.insert(pair<string, int>("Bob", 24));
    m.insert(pair<string, int>("Sunny", 19));
    printMap(m);

    // map容器赋值操作
    cout << "========================" << endl;
    map<string, int> m2 = m;
    printMap(m);

}

int main()
{
    test01();
    system("pause");
    return 0;
}

运行结果

上面学习了:

  • 如何遍历map容器
  • map容器的插入操作,插入函数的参数是一个对组
  • map的构造和赋值操作

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值