2 llurj llurj 于 2014.12.18 20:34 提问

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

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

3个回答

u013162356
u013162356   2014.12.19 22:51

#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;

}

u013162356
u013162356   2014.12.19 22:51

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

oyljerry
oyljerry   Ds   Rxr 2015.01.01 15:34

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!