sort()函数
sort (start , end, 排序方法) //默认从小到大
int a[100]; sort(a, a+100);//可对字符串排序 char a[100],sort(a, a+100, greater<char>());
sort(a, a+100, less<int>()); //降序
bool complare(int a, int b){ return a > b; }
sort(a, a+100, complare);
结构体数组的排序
struct student{
int x, y; };
bool cmp(student a, student b)
{ return a.x > b.x;}//按x的降序
bool cmp(student a, student b)
{ if (a.x ==b.x) return a.y < b.y;//x相同时y从小到大
return a.x > b.x;//按x从大到小拍结构体
}
在STL标准容器中,只有vector、string、deque是可以使用sort的。
这是因为像set、map这种容器是用红黑树实现的(了解即可),元素本身有序,故不允许使用sort排序。
#include <cstdio>
#include <algorithm>
#include <string>
#include <iostream>
using namespace std;
int main ()
{ string a[3] = {"bbbb", "cc","aaa"};
sort(a, a+3);//按字典序升序
for (int i=0; i< 3; i++) cout << a[i] << endl;
return 0;
}
pair的使用
map的使用
<map>//内部有序
map<映射前key, 映射后value> mp;
1.下标访问
map<char,int>mp;
mp['c']=20;
mp['c']=30;
printf("%d",m['c'])输出的是30;
2.迭代器访问
map<t1, t2>::iterator it;
find(key) //返回为key映射的迭代器
mp.erase(key) mp.erase(it);
mp.erase(first, last)//删除[first,last)
size(); clear(); // int l= mp.size();
查找:it = mp.find(1); //没找到返回的迭代器等于end()
mp.insert(pair<int, string>(1, "one"));
or mp[1]= "one";
for (it = mp.begin(); it != mp.end(); it ++) cout << it->first ;
typedef struct node {} NO; 申请变量时写NO n;