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; }
