21xrx.com
2024-11-05 16:32:38 Tuesday
登录
文章检索 我的文章 写文章
C++ Map的使用方法拓展
2023-07-09 17:07:05 深夜i     --     --
C++ Map 使用方法 拓展

C++ Map是一种常用的STL容器,它可以将值和键配对。当需要快速查找特定键对应的值时,Map是一个非常有用的容器。Map实现了一个平衡二叉树,因此其查找时间复杂度为O(log n)。

以下是C++ Map的一些方法拓展:

1. 使用自定义比较函数

Map默认使用小于号来比较键的值,如果想使用自定义的比较函数来排序键,需要在定义Map时传递一个自定义的比较函数。比如,以下是一个使用自定义比较函数的Map定义示例:


bool myCompare(const int& a, const int& b)

  return a > b;

std::map<int, std::string, decltype(&myCompare)> myMap(myCompare);

这个Map会按照键的值从大到小排序。传递的第三个参数是一个指向自定义比较函数的指针。

2. 查找元素

Map提供了查找元素的方法,可以通过键来查找对应的值。以下是一个查找元素的示例代码:


std::map<std::string, int> myMap { "cat", 2 };

auto search = myMap.find("cat");

if (search != myMap.end())

  std::cout << "Found " << search->first << " with value " << search->second << std::endl;

else

  std::cout << "Key not found" << std::endl;

这个示例中,使用find()方法来查找“cat”键对应的元素。如果键存在,输出键和值。如果键不存在,输出“Key not found”。

3. 插入元素

向Map中插入元素可以使用insert()方法。以下是一个插入元素的示例代码:


std::map<std::string, int> myMap { "cat", "dog" };

myMap.insert(std::make_pair("fish", 1));

myMap.insert(std::pair<std::string, int>("bird", 3));

这个示例中,使用insert()方法插入了两个键值对。第一个使用了make_pair()函数,第二个使用了pair()构造函数。

4. 删除元素

从Map中删除元素可以使用erase()方法。以下是一个删除元素的示例代码:


std::map<std::string, int> myMap { "cat", 2, 1 };

myMap.erase("dog");

这个示例中,使用erase()方法删除了键为“dog”对应的元素。

5. 遍历Map

遍历Map可以使用auto关键字对Map进行迭代。以下是一个遍历Map的示例代码:


std::map<std::string, int> myMap { 4, "dog", "fish", "bird" };

for (auto it = myMap.cbegin(); it != myMap.cend(); ++it)

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

这个示例中,使用cbegin()和cend()方法获取Map的迭代器,使用auto关键字对迭代器进行自动类型推导,遍历Map中的键值对并输出。

总之,C++ Map是一个非常有用的STL容器,可以用来快速查找特定键对应的值。通过使用自定义比较函数、查找、插入、删除元素和遍历Map等方法,可以更好地利用C++ Map的优势。

  
  

评论区

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