1. 程式人生 > >set的用法

set的用法

str class set return 一個 end amp ons 註意

註意不能按id去重!只能id,val同時相同時才能去重!!
struct node
{
int id, val;
bool operator<(const node &x) const
{
if (x.id == id&&x.val==val)
return 0;
if (x.val == val)
return id < x.id;
return val < x.val;
}
};
s.insert(node{10, 200});
s.insert(node{20, 200});
s.insert(node{30, 200});
s.insert(node{
20, 200}); s.insert(node{10, 100}); for (set<node>::iterator it = s.begin(); it != s.end(); it++) { cout << (*it).id << " " << (*it).val << endl; }

struct node
{
    int id, val;
    bool operator<(const node &x) const
    {
        if (x.id == id && x.val == val)
            
return 0; if (x.val == val) return id > x.id; return val > x.val; } }; int n, m, k, a, b; arr c; set<node> s; bool comp(const node &x,const node &y){ return x.val > y.val; } int main() { // file("test"); // sdf(n),sdf(m),sdf(k);
// For(i, 1, n) sdf(c[i]); // sdf(a); // For(i,1,a) s.insert(node{10, 200}); s.insert(node{20, 400}); s.insert(node{30, 300}); s.insert(node{20, 200}); s.insert(node{10, 100}); // s.clear(); cout << s.size() << endl; set<node>::iterator it; it = upper_bound(s.begin(),s.end(),node{50, 200},comp);//從大到小排序的話,找第一個小於200的node if(it!=s.end()) s.erase(it); cout<< s.count(node{20, 400}) << endl; for (it = s.begin(); it != s.end(); it++) { cout << (*it).id << " " << (*it).val << endl; } }

set的用法