C++之map

xinruoqianqiu 2024-08-07 08:35:02 阅读 74

1、map介绍

        map是C++ STL的一个关联容器,它提供一对一的数据处理能力。其中,各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int、double 等)、使用结构体或类自定义的类型。

        第一个可以称为关键字(key);

        第二个可能称为该关键字的值(value);

        使用 map 容器存储的各个键值对,键的值既不能重复也不能被修改。换句话说,map 容器中存储的各个键值对不仅键的值独一无二,键的类型也会用 const 修饰,这意味着只要键值对被存储到 map 容器中,其键的值将不能再做任何修改。

2、map库函数

2.1、构造函数

(1)map<key_DataType, value_DataType> map_vec;

<code>//声明一个map类型的变量举例如下:

map<int, int> map1;

map<int, string> map2;

map<string, int> map3;

map<vector<int>, vector<vector<int>>> map4;

map<vector<int, int> map5

2.2、属性操作

(1)empty()              // 如果map为空,则返回true

(2)size()                 // 返回map中的元素数

(3)max size()         // 返回map的最大容量

2.3、元素访问

(1)operator[]                   // 用给定的键检索元素

(2)at                                 // 用给定的键检索元素

2.4、增删改查

insert()                    //在map中插入元素

erase()                    //从map上擦除元素

swap()                     //交换map内容

clear()                      //删除map的所有元素

emplace()               //构造新元素并将其插入map

emplace_hint()       //通过提示构造新元素并将其插入map

key _comp()             //返回键比较对象的副本

value comp()            //返回值比较对象的副本

find()                          //搜索具有给定键的元素

count()                       //获取与给定键匹配的元素数

lower_bound()           //返回迭代器的下限

upper_bound()         // 返回一个迭代器到上限

equal_range()           //返回与给定键匹配的元素范围

2.5、迭代器

(1)begin()                //返回指向map中第一个元素的迭代器

(2)cbegin()              //返回指向map中第一个元素的consti迭代器

(3)end()                  // 返回指向末尾的迭代器

(4)cend()                 //返回指向末尾的常量迭代器

(5)rbegin()              //返回指向末尾的反向迭代器

(6)rend()                  //返回指向起点的反向迭代器

(7)crbegin()             //返回指向末尾的常量反向迭代器

(8)crend()                //返回指向起点的常量反向迭代器

3、示例

#include <map>

#include <iostream>

using namespace std;

void print_map(map<int, string> v)

{

cout << "map: ";

for (auto it = v.begin(); it != v.end(); it++)

{

cout << it->first << " " << it->second << " ";

}

cout << endl;

}

int main()

{

map<int, string> mp1;

mp1[1] = "abcdefg HIJKLMN";

mp1[2] = "zhong guo ni hao";

mp1[3] = "-=-=-=-=-=-=-=-=";

mp1[4] = "++++++++++++++++";

mp1[5] = "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk";

print_map(mp1);

// 查找

map<int, string>::iterator it = mp1.find(4);

cout << it->first << " " << it->second << endl;

//删除

it = mp1.find(4);

mp1.erase(it);

print_map(mp1);

mp1[4] = "++++++++++++++++";

//删除区间

it = mp1.find(4);

mp1.erase(it, mp1.end());

print_map(mp1);

mp1[4] = "++++++++++++++++";

mp1[5] = "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk";

cout << mp1.size() << endl;

mp1.clear();

cout << mp1.size() << endl;

return 0;

}

结果为:



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。