c++ map自定义比较函数,发生运行时越界。
#include <string>
#include <iostream>
#include <list>
#include <vector>
#include <set>
#include <map>
using namespace std;
bool compareStr(const string &,const string &);
int main()
{
vector<string> vstr{"abc","def","abcd","defgg","abcdef"};
set<string,decltype(compareStr)*> s1(compareStr);
//s2类型定义提供比较操作函数类型指针如下,容器定义时候需要提供比较操作(一个用来比较的函数名字)
set<string,decltype(compareStr)*> s2(vstr.begin(),vstr.end());
s1 = {"abc","def","abcd","abcdef"};
for(auto i : s1)
cout << i << " ";
cout << endl;
for (auto i : s2)
cout << i << " ";
cout << endl;
return 0;
}
bool compareStr(const string & s1,const string & s2)
{
return (s1.size() > s2.