📅  最后修改于: 2023-12-03 15:23:22.487000             🧑  作者: Mango
在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中一个非常有用的方法。它使得我们可以比较两个容器中的元素键值,并根据键值进行排序。在需要根据元素键值排序的场合,该方法可以帮助我们轻松地实现。