STL_sort cmp

学习,记录,成长。初次见面请多指教。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct node
{
    int xi;
    int mi;
    /* data */
};

bool lessmark(const node &s1, const node &s2)
{
    return s1.mi > s2.mi;
}
int main()
{
    vector<node> lian;
    int m, n, a, b;
    cin >> m >> n;
    node data;
    for (int i = 0; i < (m + n); i++)
    {
        cin >> a >> b;
        data.xi = a;
        data.mi = b;
        lian.push_back(data);
    }
    sort(lian.begin(), lian.end(), lessmark);
    for (int i = 0; i < lian.size(); i++)
    {
        if ((i + 1) < lian.size() &&lian[i].mi == lian[i + 1].mi)
        {
            lian[i + 1].xi += lian[i].xi;
            lian[i].xi = 0;
        }
        if (lian[i].xi != 0)
            cout << lian[i].xi << " " << lian[i].mi << endl;
    }
    lian.clear();
    return 0;
}

补充一些常用的STL

next_permutation(a,a+n)生成下一个较大排列

bool  binary_search(a,a+9,4)(有序)二分查找

lower_bound(a,a+9,4)返回第一个大于或等于

upper_bound(a,a+9,2)返回第一个大于

unique(a,a+9)删重

memset(a,0,sizeof(a))

memset(a,0x3f,sizeof(a))

reverse(a,a+9)自身翻转容器

abs()  fabs()

读整行 string s getline(cin,s)   or   char s[1024] cin.getline(s,1024)

bool cmp(const node &s1, const node &s2)

{

    return s1.mi > s2.mi;

}

 

容器类

size()   O(1)      empty()   空true

posted @ 2021-03-10 13:07  anyiya  阅读(54)  评论(0编辑  收藏  举报