问题描述
- 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的内容,也可以自己定义比较的方式,这个需要你自己定义
时间: 2024-12-03 15:50:56