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