📜  C++ STL中的multimap upper_bound()函数(1)

📅  最后修改于: 2023-12-03 15:13:56.575000             🧑  作者: Mango

Multimap Upper_bound()函数

C++ STL中的multimap是一种容器,可以存储多对键值,这些键值可以重复。multimap中的元素是根据键值来排序的,默认情况下是按照键值从小到大排序的。multimap upper_bound()函数用于查找大于某个键值的第一个元素的迭代器,返回的是一个指向该元素的迭代器。

语法

multimap::iterator upper_bound(const key_type& k);

参数

k:要查找的键值。

返回值

指向大于k的第一个元素的迭代器。

示例代码
#include <iostream>
#include <map>

using namespace std;

int main() {
    multimap<int, string> myMultimap;
    myMultimap.insert(pair<int, string>(1, "One"));
    myMultimap.insert(pair<int, string>(2, "Two"));
    myMultimap.insert(pair<int, string>(2, "Three"));
    myMultimap.insert(pair<int, string>(3, "Four"));
    myMultimap.insert(pair<int, string>(4, "Five"));
    
    multimap<int, string>::iterator it;
    
    it = myMultimap.upper_bound(2);
    cout << "Elements with key greater than 2 are:" << endl;
    for (; it != myMultimap.end(); it++) {
        cout << it->second << endl;
    }
    return 0;
}
示例解释

在以上示例中,我们首先创建了一个multimap,其中包含5个元素,并以键值排序。然后,我们调用upper_bound函数来查找大于2的第一个元素的迭代器,并将其存储在一个指针变量it中。

最后,我们使用一个for循环来遍历从it到multimap末尾的所有元素,并输出它们的值。由于multimap是根据键值排序的,而我们要找的是键值大于2的元素,因此我们只能看到multimap中键值大于2的元素的值。

输出结果如下:

Elements with key greater than 2 are:
Three
Four
Five
代码说明

我们定义了一个multimap类型的容器myMultimap,并向其中添加了5个元素,其中键值分别为1、2、2、3和4。之后,我们定义了一个迭代器it,并使用upper_bound函数来查找键值大于2的第一个元素的迭代器,将其存储在it中。

最后,我们使用一个for循环来遍历从it到multimap末尾的所有元素,并输出它们的值。由于it是指向第一个键值大于2的元素的迭代器,因此我们只输出键值大于2的元素的值。

结论

multimap upper_bound()函数是一个非常有用的函数,在STL容器中可以有效地用于查找键值大于某个值的元素,它能够返回指向该元素的迭代器的指针。