一篇关于杂碎小知识的博客
· string自带的find():可查找指定字符串和指定字符。
如在string1中查找string2,string1.find(string2);返回值为string2第一次在string1中出现的位置
若希望在特定位置开始查找,可使用 string1.find(string2,location);
· erase一共三种用法:
①erase(pos,n);
删除从下标pos开始的第n个字符,比如erase(0,1)为删除第一个字符
②erase(position);
删除postion处的一个字符
③erase(first,last)
删除从first到last之间的字符
· 当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过 str="\n"; 的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。
· 1<<n:二进制每左移一位就是*2,两位就是*2*2,三位就是*2*2*2
1>>n 1右移n位
n>>1 n右移1位
1<<n 1左移n位
n<<1 n左移1位
· register:register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。
(注意是暗示而不是命令)
· inline
· 空间换取时间
· 当函数的调用时间多于函数的运行时间的时候,用内联函数可以节省函数的调用时间。如果函数的运行较复杂,如有循环语句的时候,就没有必要使用内联函数了。
· 关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline放在函数声明前面不起任何作用。
· memset:按一个字节一个字节来给数组或者是结构体赋值,不可以初始化为1
memset(a, 127, sizeof(a));//数组中的所有元素全为2139062143(可以将其视为INF)