头文件:
#include
int a[5] = {4,2,1,3,5};
vector b(a,a+5);
sort(a,a+5);//搭配数组 从小到大排序
sort(b.begin(),b.end());//搭配容器,如vector
sort(a,a+5,greater());//从大到小排序
//在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,
//若存在返回其在向量中的位置
find(a.begin(),a.end(),10);
//从c中删除迭代器p指定的元素,p必须指向c中的一个真实元素,不能等于c.end()
c.erase(p);
//从c中删除迭代器对b和e所表示的范围中的元素,返回e
c.erase(v.begin(),v.end());
vectorv={1,2,3,4,5};
reverse(v.begin(),v.end());//v为{5,4,3,2,1};
max(a,b);//返回a,b较大值
min(a,b);//同理
swap(a,b)//交换a和b
scanf("%d %d",&n,&m);
int k=__gcd(n,m);//最大公约数
printf("%d ",k);
printf("%d", n * m / k); //最小公倍数
使用前一定要先排序
lower_bound():返回第一个>=target的数的地址;
upper_bound():返回第一个>target的数的地址;
int r=upper_bound(v.begin(),v.end(),target)-v.begin();//减去首地址,返回下标
int l=lower_bound(v.begin(),v.end(),terget)-v.begin();
此外,再附加一个 next_permutation
(全排列)
作用:
将当前排列更改为全排列中的下一个排列。
如果当前排列已经是全排列中的最后一个排列(元素完全从大到小排列),函数返回 false 并将排列更改为全排列中的第一个排列(元素完全从小到大排列);否则,函数返回 true。
// 1 结合 数组
int a[] = {1, 2, 3, 4, 5};
do{
for(int i = 0; i < 5; i ++) cout << a[i] << " ";
cout << endl;
}while(next_permutation(a, a + 5));
// 2结合 vector
vector a = {1, 2, 3, 4, 5};
do{
for(int i = 0; i < a.size(); i ++) cout << a[i] << " ";
cout << endl;
}while(next_permutation(a.begin(), a.end()));