我想在比较的时候改变一个集合的元素,像这样:-
#include<bits/stdc++.h>
using namespace std;
struct cmp
{
bool operator()( pair<int,int> a, pair<int,int> b)
{
if(a.first<=b.first)
{
b.first++;
}
return a.first<b.first;
}
};
signed main()
{
int n;
cin>>n;
set< pair<int,int> ,cmp> s;
int position;
for(int i=0;i<n;i++)
{
cin>>position;
s.insert({position,i});
}
return 0;
}
但是它不工作,你能告诉我如何才能做到这一点吗??
你不能。 std::set
中的元素是不可变的。 您必须从集合中删除该项,更改它,然后将其添加回来。
守则中的其他问题:
#include
;
修复compare函数签名中的最后两项:
bool operator()(pair<int,int> const & a, pair<int,int> const & b) const