c++ map value_comp 的用法,举例说明,谢谢!
1个回答
展开全部
C++中的map::value_comp()原型是:
value_compare value_comp ( ) const;
其返回值是一个比较类的对象,这个类是map::value_compare,并且是map的一个内部类。
返回的这个对象可以用来通过比较两个元素的value来判决它们对应的key在map的位置谁在前面谁在后面。
下面是一个简单的例子,看一下就会更明白了:
#include <iostream>
#include <map>
using namespace std;
int main ()
{
map<char,int> mymap;
map<char,int>::iterator it;
pair<char,int> highest;
mymap['x']=1001;
mymap['y']=2002;
mymap['z']=3003;
cout << "mymap contains:\n";
highest=*mymap.rbegin(); // last element
it=mymap.begin();
do {
cout << (*it).first << " => " << (*it).second << endl;
} while ( mymap.value_comp()(*it++, highest) );
return 0;
}
输出结果:
mymap contains:
x => 1001
y => 2002
z => 3003
解释一下,上面语句while里面的mymap.value_comp()(*it++, highest)在这样的条件下会返回true:
*it++对应的key在map中排在highest对应的key的前面时。
因此,可以认为进行了一个内部的排序。
希望对你有所帮助:)
value_compare value_comp ( ) const;
其返回值是一个比较类的对象,这个类是map::value_compare,并且是map的一个内部类。
返回的这个对象可以用来通过比较两个元素的value来判决它们对应的key在map的位置谁在前面谁在后面。
下面是一个简单的例子,看一下就会更明白了:
#include <iostream>
#include <map>
using namespace std;
int main ()
{
map<char,int> mymap;
map<char,int>::iterator it;
pair<char,int> highest;
mymap['x']=1001;
mymap['y']=2002;
mymap['z']=3003;
cout << "mymap contains:\n";
highest=*mymap.rbegin(); // last element
it=mymap.begin();
do {
cout << (*it).first << " => " << (*it).second << endl;
} while ( mymap.value_comp()(*it++, highest) );
return 0;
}
输出结果:
mymap contains:
x => 1001
y => 2002
z => 3003
解释一下,上面语句while里面的mymap.value_comp()(*it++, highest)在这样的条件下会返回true:
*it++对应的key在map中排在highest对应的key的前面时。
因此,可以认为进行了一个内部的排序。
希望对你有所帮助:)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询