35-【什么叫规矩 什么叫体统】map容器


// 重要基础:
// map中所有元素都是pair
// pair
// 根据key排序(二叉树)

// 本质-关联式容器
// 优势-快速根据key找value
// map&multimap 区别 key是否可以重复

#include
#include
using namespace std;

void printMap(map<int,int>&m)
{
    for(map<int,int>::iterator it = m.begin();
    it!=m.end();it++)
    {
        cout << (*it).first << " " << (*it).second << endl;
    }
}
//构造赋值
void test_42()
{
    map<int,int> m;//创建
    m.insert(pair<int,int>(1,10));
    m.insert(pair<int,int>(2,20));
    m.insert(pair<int,int>(3,30));
    printMap(m);

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

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

}


//map大小和交换
void test_43()
{
    //size/empty/swap
    // https://www.bilibili.com/video/BV1Hb411Y7E5?p=232
}


//插入删除
void test_44()
{
    //insert/erase/clear
    map<int,int> m;

    m.insert(pair<int,int>(1,22));              //插入方式-1
    m.insert(make_pair(2,343));                 //插入方式-2
    m.insert(map<int,int>::value_type(3,364));  //插入方式-3
    m[4] = 222;                                   //插入方式-4

    printMap(m);

    cout << m[5] << endl;//不建议插入,会创建
    printMap(m);

    cout << m[0] << endl;//可以用来访问

    //删除
    m.erase(m.begin());
    printMap(m);

    m.erase(3);//按key删除 没有就不删,不会报错
    printMap(m);

    // m.erase(m.begin(),m.end());
    m.clear();
    printMap(m);

}


//查找/统计
void test_45()
{
    //find-找到返回位置,找不到返回最后位置
    //const-
    map<int,int> m;

    m.insert(make_pair(1,22));              //插入方式-1
    m.insert(make_pair(2,34));
    m.insert(make_pair(3,66));

    map<int,int>::iterator it = m.find(3);
    if (it != m.end())
    {
        cout << "找到了:" << (*it).first <<endl;
    }
    else
    {
        cout << "没找到!" <<endl;
    }
    // count 统计的是key
    cout << "count: " <<m.count(1)<< endl;

}


//排序
class myCompare2
{
public:
    bool operator()(int v1,int v2)
    {
        return v1>v2;
    }

};
void test_46()
{
    map<int,int,myCompare2> m;

    m.insert(make_pair(1,22));              //插入方式-1
    m.insert(make_pair(2,34));
    m.insert(make_pair(3,66));
    for(map<int,int,myCompare2>::iterator it = m.begin();
    it!=m.end();it++)
    {
        cout << (*it).first << " " << (*it).second << endl;
    }

}
int main()
{
    test_42();
    test_44();
    test_45();
    test_46();
}

35-【什么叫规矩 什么叫体统】map容器_第1张图片

你可能感兴趣的:(c++)