Q1:假如我自定义函数:
int pa[100010];
struct cmp {
bool operator () (const int a,const int b) const {
return pd[a] < pd[b];
}
};
set<int,cmp> q;
之后,向q中insert数值,却发现只有第一个insert能进去。完整代码:
#include<iostream>
#include<set>
using namespace std;
int pd[10010];
struct cmp{
bool operator () (const int a,const int b) const {
return pd[a] < pd[b];
}
};
set<int,cmp> q;
int main() {
q.insert(1);
q.insert(2);
q.insert(5);
q.insert(4);
pd[1] = 4;
pd[2] = 3;
pd[5] = 6;
pd[4] = 1;
cout << q.size() << endl;
for(set<int>::iterator it = q.begin();it != q.end();it++) cout << *it << " ";
return 0;
}
输出:
1
1
这是为什么,或者应该怎么修改呢
Q2:即当我使用auto的时候,比如说
auto itt = q.begin();
它会报错说
error: 'itt' does not name a type
这是为什么