C++标准库中,set容器的insert函数中的比较函数重写问题

在**set **容器里我把它的其中的元素定义为map,然后我就不会写compare函数了。因此他的insert函数就跪了……求大神助……哭……

#include

#include
using std::string;

#include
using std::map;

#include
using std::set;

#include
using std::make_pair;

#include
using std::size_t;

typedef bool(*Scomp) (const string &, const string&);

int main()
{

map<string,size_t, Scomp> S([](const string&a, const string&b)    
{ return  b > a; }
);

S.insert(make_pair("a",1));
S.insert(make_pair("b",2));
S.insert(make_pair("c",3));




for (const auto &p : S)
std::cout << p.first << " "<<p.second<<" ";
std::cout << std::endl;




map<string,size_t, Scomp> SS([](const string&a, const string&b)   
{ return  b > a; }
);

SS.insert(make_pair("d",1));


//别名 
using set_map = map<string,size_t, Scomp>::value_type;

set<set_map> s_m;
s_m.insert(S.begin(),S.end());
s_m.insert(SS.begin(),SS.end()); 

//输出 
for(const auto &s :s_m)
std::cout<<s.first <<" " <<s.second<<" ";

return 0;

}

刚写的。。不知道,,是不是你的要求。。

compare就是比较map的内容,也可以自己定义比较的方式,这个需要你自己定义