21xrx.com
2024-12-22 21:16:45 Sunday
登录
文章检索 我的文章 写文章
C++中的字典——Map
2023-06-27 08:15:18 深夜i     --     --
C++ 字典 Map 键值对 数据结构

Map是C++ STL中的一个常用类,是一种关联式容器(associative container),即它将键值(key)和值(value,也被称为mapped_type)一一对应。 Map按照键值自动排序,可自定义排序比较函数。Map中的数据存储在红黑树(red-black tree)中,插入、查找和删除等操作的时间复杂度为O(log n)。

Map的特点之一是允许对元素进行快速查找,可以根据key快速地找到对应的value,因此广泛应用于算法设计中。

Map的另一个特点是具有自动排序功能,它会将所有元素按键值从小到大排序。如果想要按照自定义规则进行排序,可以自己定义一个自定义的比较函数。

Map的定义方式如下:


map<key_type, value_type, compare_type> m;

其中,key_type是键值的数据类型,value_type是值的数据类型,compare_type是比较函数的类型。如果不指定compare_type类型,Map默认使用键值类型的小于运算符进行比较。

Map的常用操作:

1. 插入元素

可以使用insert()函数将元素插入Map中,语法如下:


m.insert(make_pair(key, value));

make_pair()函数用于创建一个key-value对,可以直接插入到Map中。

2. 查找元素

可以使用find()函数进行查找Map中的元素,如果找到了对应的key,返回该元素的迭代器;如果没有找到,返回Map的end()迭代器。语法如下:


auto it = m.find(key);

if (it != m.end())

  // 找到了元素

else

  // 没有找到元素

3. 删除元素

可以使用erase()函数从Map中删除元素,语法如下:


m.erase(key);

4. 遍历Map

可以使用迭代器(iterator)遍历Map中的所有元素,语法如下:


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

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

Map的简单使用示例:


#include <iostream>

#include <map>

using namespace std;

int main()

{

  map<string, int> m;

  // 插入元素

  m.insert(make_pair("apple", 10));

  m.insert(make_pair("banana", 20));

  m.insert(make_pair("orange", 30));

  // 查找元素

  auto it = m.find("apple");

  if (it != m.end())

    cout << "apple:" << it->second << endl;

  

  // 遍历Map

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

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

  

  // 删除元素

  m.erase("banana");

  cout << "after erase banana:" << endl;

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

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

  

  return 0;

}

以上是Map的基本概念和用法介绍,学习Map可以让我们更好地掌握C++ STL中的关联式容器,提高程序的效率和灵活性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复