21xrx.com
2025-03-21 21:07:54 Friday
文章检索 我的文章 写文章
C++ multimap的用法及示例详解
2023-09-16 02:40:21 深夜i     --     --
C++ multimap usage example detailed

C++ multimap是一个关联容器,它可以存储键值对,并且允许相同键对应多个值。它基于红黑树实现,其中的键是被排序的,这使得multimap成为了一个非常有用的工具。

multimap的用法非常简单。首先,我们需要包含头文件。然后,我们可以使用multimap关键字创建一个multimap对象,如下所示:

std::multimap<int, std::string> myMultimap;

这里我们创建了一个以整数为键,字符串为值的multimap。

接下来,我们可以使用insert()函数将键值对插入到multimap中。insert()函数接受一个键值对作为参数,可以一次插入多个键值对。

myMultimap.insert(std::make_pair(1, "apple"));
myMultimap.insert(std::make_pair(2, "banana"));
myMultimap.insert(std::make_pair(1, "orange"));

在上面的示例中,我们插入了三个键值对。注意,键1是重复的,这是multimap与普通的map的不同之处。

我们可以使用迭代器遍历multimap,并访问其中的键和值:

for (auto it = myMultimap.begin(); it != myMultimap.end(); ++it)
  std::cout << "Key: " << it->first << " Value: " << it->second << std::endl;

输出将会是:

Key: 1 Value: apple
Key: 1 Value: orange
Key: 2 Value: banana

注意,multimap中的元素是按键的顺序排序的。

我们还可以使用count()函数来查找特定键的值的数量:

int count = myMultimap.count(1);
std::cout << "Number of values with key 1: " << count << std::endl;

输出将会是:

Number of values with key 1: 2

count()函数返回特定键的值的数量。在这个例子中,键1有两个值。

除了count()函数之外,我们还可以使用equal_range()函数来获取特定键的值的范围:

auto range = myMultimap.equal_range(1);
for (auto it = range.first; it != range.second; ++it)
  std::cout << "Value with key 1: " << it->second << std::endl;

输出将会是:

Value with key 1: apple
Value with key 1: orange

在上面的示例中,我们获取了键1对应的值的范围,并遍历输出了这些值。

总的来说,C++ multimap是一个非常有用的工具,它可以存储允许重复键的键值对,并且允许我们按键的顺序访问这些值。上述示例提供了multimap的使用方法和一些常见的操作,希望能对你有所帮助。

  
  

评论区