TIP

1.int最大最小值

#define INT_MAX 0x7fffffff
#define INT_MIN 0x80000000

2.空间复杂度

可开数组大小=内存/位数(都化为bit)
e.g. 512MB 32bit
大小=(51210241024*8)/32=1e8

3.toupper

存在头文件cctype,将小写字母转换为大写字母,其他不变
char i=‘t’; i=toupper(i); 此时i为T;

4.nth_element

nth_element(a,a+k-1,a+n);将数组a第k小数放在第k位
此时a[k-1]就是第k小数

5.memcpy

memcpy指的是C和C++使用的内存拷贝函数,函数原型为void *memcpy(void *destin, void *source, unsigned n);函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中,即从源source中拷贝n个字节到目标destin中。
memcpy(ans,a,sizeof(a));

6.二进制

取反用异或^, 末尾取反:x^1
变1用按位或|, 末尾变1:x|1
变0用按位与&, 末尾变0:x&0
右数第k位变1:x|(1<<(k-1))
右数第k位变0:x&(~(1<<(k-1)))
右数第k位取反:x^(1<<(k-1))

7.互达

一棵树任意节点的根节点一样则其互达

8.memset

memset(a,127,sizeof(a)),全部初始化为int的较大值,即2139062143(int 最大值为2147483647);
memset(a,128,sizeof(a)),全部初始化为一个很小的数,比int最小值略大,为-2139062144。

9.~scanf

scanf读取失败返回-1,取反为0,停止输入
成功返回读取个数,据变量类型,按字节取反;

10.i&(-i)

i&(-i)运算的功能为返回 i 的二进制数表示为1的最低位的权值
相当于找i的二进制末尾0的个数+1

比如说,十进制数6,二进制数表示为110,为1的最低位权值是2;
再比如说十进制数20,二进制数表示为10100,为1的最低位权值是4;
而十进制数7,二进制表示为111,它的为1的最低位权值则是1

11.vector数组赋值给另一vector

在c/c++中,将一个vector内容赋值给另一个vector的方法大概有如下四个:
方法1:

vector v1(v2);//声明 1

方法2:使用函数assign进行赋值:

vector v1;//声明v1

v1.assign(v2.begin(), v2.end());//将v2赋值给v1 1 2

方法3:使用swap进行赋值:

vector v1();

v1.swap(v2);//将v2赋值给v1 1 2

方法4:使用最笨的方法,即使用迭代器和循环语句赋值的方法。其方法运行效率较差

vector::iterator it;//声明迭代器
for(it =v2.begin();it!=v2.end();++it)//遍历v2,赋值给v1
{v1.push_back(it); }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值