将multiset 跟multimap 容器中的比较函数替换掉的方法

#include <iostream>
#include <vector>
#include <map>
#include <set>
bool comp(const std::string & lhs,const std::string & rhs)
{
return lhs.size()<rhs.size();
}
int main(int argc,char * argv[])
{
typedef std::string string;
typedef bool (*ptr)(const string &,const string &);
typedef std::multimap<string,string,ptr> multimap_type;
multimap_type multimap_obj(comp);
multimap_obj.insert(std::make_pair("abcd","dd"));
multimap_obj.insert(std::make_pair("yyy","dd"));
multimap_obj.insert(std::make_pair("yxy","dd"));
multimap_obj.insert(std::make_pair("yzy","dd"));
multimap_obj.insert(std::make_pair("zz","dd"));
for(multimap_type::const_iterator iter=multimap_obj.begin();iter!=multimap_obj.end();iter=multimap_obj.upper_bound((*iter).first))
{
std::cout<<(*iter).first.c_str()<<std::endl;
}

::system("pause");
return 0;

}


结果是按照字符串的长度排列,依次输出zz yyy abcd

你可能感兴趣的:(将multiset 跟multimap 容器中的比较函数替换掉的方法)