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

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

 

1.对组

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

对组的两种创建方式

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

#include 
#include 
using namespace std;

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

    // 对组创建方法2
    pair 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

构造和赋值相关函数原型

C++ map容器-57-对组和map构造/赋值_第1张图片

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

#include 
#include 
#include 
using namespace std;

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

void test01()
{
    // map容器的构造
    map m;

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

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

}

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

运行结果

C++ map容器-57-对组和map构造/赋值_第2张图片

上面学习了:

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

 

你可能感兴趣的:(C++学习笔记)