C++提高编程 3 STL常用容器 -map/multiset容器


3.9  map/multimap容器

3.9.1  map基本概念

简介:

1、map中所有元素都是pair

2、pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)

3、所有元素都会根据元素的键值自动排序

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

优点:可以根据key值快速查到value值

区别:1、map不允许容器中有重复的key值元素;2、multimap允许容器中有重复发key值元素

3.9.2  map构造与赋值

对map容器进行构造和赋值操作

函数原型:

构造:

mapmp;    //map默认构造函数;

map(const map &mp)  //拷贝构造函数

赋值:

map& operator=(const map &mp);     //重载等号操作符

#include
using namespace std;
#include

//map容器  构造与赋值
void printMap(map<int, int>&m)
{
    for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
    {
        cout << "key值为:" << it->first << "     " << "value为:" << (*it).second << endl;
    }
    cout << endl;
}


void test1()
{
    map<int, int> m;
    m.insert(pair<int, int>(1, 10));        //(1,10)1为键值,起到索引作用,10为插入元素
    m.insert(pair<int, int>(2, 20));
    m.insert(pair<int, int>(3, 30));
    m.insert(pair<int, int>(4, 40));

    printMap(m);

    //拷贝构造
    map<int, int>m2(m);
    printMap(m2);

    //赋值
    map<int, int>m3;
    m3 = m2;
    printMap(m3);

}


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

打印结果:

key值为:1 value为:10
key值为:2 value为:20
key值为:3 value为:30
key值为:4 value为:40

key值为:1 value为:10
key值为:2 value为:20
key值为:3 value为:30
key值为:4 value为:40

key值为:1 value为:10
key值为:2 value为:20
key值为:3 value为:30
key值为:4 value为:40

3.9.3  map大小和交换

统计map容器大小以及交换map容器

函数原型:

size();    //返回容器中元素