1.C++STL中的二分查找函数 binary_search(a,a+n,key)
返回是否存在值的bool型的
#include <cstdio>
#include <algorithm> //头文件
using namespace std;
int a[10]={1,3,5,7,9};
bool f;
int main()
{
f=binary_search(a,a+5,7);
printf ("%d\n",f); //1
f=binary_search(a,a+5,6);
printf ("%d\n",f); //0
return 0;
}
2.按字典序生成全排列的函数next_permutation(a,a+n)
#include <cstdio>
#include <algorithm> //头文件
using namespace std;
int a[5]={0,1,2,3,4};
int main()
{
do {
for (int i=0;i<5;i++)
printf ("%d ",a[i]);
puts("");
} while (next_permutation(a,a+5));
return 0;
}
3.数组的一部分直接复制到另一个数组
如果要从数组a复制k个元素到数组b,可以这样做memcpy(b,a,sizeof(int)*k);
#include <cstdio>
#include <algorithm>
#include <cstring> //头文件
using namespace std;
int a[5]={0,1,7,6,4};
int b[5];
int main()
{
memcpy(b,a,sizeof(int)*4);
for (int i=0;i<4;i++)
printf ("%d ",b[i]);
return 0;
}
memcpy(d,s+14,4);//从第14个字符(V)开始复制,连续复制4个字符????好像不行????
原数组从1开始,从第l个开始复制到r的写法
memcpy(b,&a[l],sizeof(int)*(r-l+1));
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int n,m,l,r,k;
int a[1010],b[1010];
int main()
{
scanf ("%d",&n);
for (int i=1;i<=n;i++) scanf ("%d",&a[i]);
scanf ("%d",&m);
while (m--) {
scanf ("%d%d%d",&l,&r,&k);
memcpy(b,&a[l],sizeof(int)*(r-l+1));
sort(b,b+r-l+1);
printf ("%d\n",b[r-l-k+1]);
}
return 0;
}
4.判断两个字符串相等
strcmp(s1,s2);
<0 第一个字符串小于第二个字符串
=0 两个字符串相等 ·
>0 第一个字符串大于第二个字符串
5.sort对字符串排序
sort只能对c++里面的string串排序,不能对c里面的字符数组排序
6.循环遍历移动的8个方向
for (int dx=-1;dx<=1;dx++) {
for (int dy=-1;dy<=1;dy++) {
int xx=x+dx;
int yy=y+dy;
}
}
7.swap(a,b) 交换
#include <cstdio>
#include <algorithm>
using namespace std;
int a=1,b=9;
char c='a',d='z';
int main()
{
swap(a,b);
swap(c,d);
printf ("%d %d\n%c %c\n",a,b,c,d);
return 0;
}
8.priority_queue优先队列
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
int main()
{
priority_queue<int> q;
q.push(4);
q.push(9);
q.push(1);
while (!q.empty()) {
printf ("%d\n",q.top());
q.pop();
}
return 0;
}
// 9 4 1 从大到小出
//从小到大弹出
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
int main()
{
priority_queue<int,vector<int>,greater<int> > q;//中间一定要有空格
q.push(4);
q.push(9);
q.push(1);
while (!q.empty()) {
printf ("%d\n",q.top());
q.pop();
}
return 0;
}