📜  在C++ STL中设置:: key_comp()(1)

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

C++ STL中的key_comp()

在C++的STL(标准模板库)中,key_comp()是一种方法,用于比较两个元素的键值(key value)。

语法

key_comp()方法可以用于以下几种容器中:

  • map
  • multimap
  • set
  • multiset

方法语法如下:

const key_compare& key_comp() const;

其中key_compare是容器模板参数中指定的模板类型参数。比如,对于map<int, char>key_compare的类型为less<int>,对于set<int>key_compare的类型为less<int>

功能

key_comp()方法返回一个常量引用,该引用指向排序准则(sorting criterion),它由容器的模板参数中的key_compare类型指定。该准则用于比较两个容器中的元素键值。比较的结果决定了元素的顺序。

示例

map容器为例,展示key_comp()方法的用法。

#include <iostream>
#include <map>

int main() {
    std::map<int, std::string> myMap{
        {3, "Three"},
        {1, "One"},
        {4, "Four"},
        {2, "Two"}
    };
    
    auto itr = myMap.begin();
    auto comp = myMap.key_comp();
    while (comp((*itr).first, 4)) {
        std::cout << (*itr).first << " --> " << (*itr).second << '\n';
        ++itr;
    }
    
    return 0;
}

在上述示例中,我们使用了std::map<int, std::string>容器,其中四个元素被插入,按照键值从小到大排序。

接下来的代码片段中,我们使用了key_comp()方法来比较每个元素的键值和4的大小。我们使用comp((*itr).first, 4)来比较它们。根据排序准则,如果((*itr).first < 4)comp((*itr).first, 4)将返回true,否则返回false。因此,只有当元素的键值小于4时,循环才会继续运行。

在循环中,我们依次打印了键值和值。如果容器中的元素是无序的,则输出结果也是无序的。但是由于使用了key_comp()方法,元素被插入容器时就按照键值排序,因此输出结果也按照键值的顺序。最终输出结果如下:

1 --> One
2 --> Two
3 --> Three
总结

key_comp()方法是C++ STL中一个非常有用的方法。它使得我们可以比较两个容器中的元素键值,并根据键值进行排序。在需要根据元素键值排序的场合,该方法可以帮助我们轻松地实现。