琐碎的一点技巧

用迭代器对整个数组做一次遍历

for (auto &it:a) //后面跟操作,这样就不用写迭代器的定义了

求出数组中最小的值,就不用写循环了

int arr[5]={1,2,3,4,5};
int k=*max_element(arr,arr+5);	//输出5
k=*min_element(arr,arr+5);		//输出1

从数组的地址中获得下标

//就比如min_element会返回地址,以2为例
int pla=max_element(arr,arr+5)-arr;
//其实讲指针的时候应该都学过,但是这个挺常用的

多组数据输入,都为0时退出的正确写法

while (scanf("%d%d%d%d",&n,&m,&l,&r) !=EOF &&(n||m||l||r) )

对于一个环,前进n步与后退n步的正确写法

//前进,默认起点为a,环的总长为m
int front=(a+n)%m; //毕竟都是正的,
//后退,两种写法,写法1更严谨一点
int back=((a-n)%m+m)%m; 
int back=(a-n+m)%m;//如果n故意写的很大,得出的下标会是负值

结构体的初始化

struct node{
	int val;
	node *l,*r;
	node (int val=0,node *l=NULL,node *r=NULL):val(val),l(l),r(r){}
};

string 的大小写转换

transform(b.begin(),b.end(),b.begin(),::tolower);//小写化

判断一个数是否为2的幂

int i;
int tem=i&(i-1);
if(tem==0)
    cout<<"YES";
原文地址:https://www.cnblogs.com/Salty-Fish/p/12493463.html