关于set自定义函数及auto的问题
  • 板块学术版
  • 楼主焚魂
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/9/18 12:27
  • 上次更新2024/9/18 18:26:52
查看原帖
关于set自定义函数及auto的问题
206423
焚魂楼主2024/9/18 12:27

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

这是为什么

2024/9/18 12:27
加载中...