OJ其他笔记

写给自己看的。

0.编译选项->编译器->在连接器命令行加入以下命令:”-static-libgcc”

1.关于使用scanf()录入%c:cin>>x,无论x是啥类型,’\n’ ‘\t’ ’ ‘(空白字符)不会被提取进x,一定会留在输入流中,当其后的字符被提取时其被丢弃。而对于scanf(“%口”,&x),其他的与cin一样,唯独x是char类型时,空白字符与其他字符一视同仁,也会被成功录入x中。
故在录入诸如“迷宫”类型的字符流(用二维数组存储)时,要避免使用scanf(“%c”)(输入流中的换行\n很难处理),可使用scanf(“%s”,buf[i]);整串录入。示例如下:

        for (int i=0;i<n;i++){
            scanf("%s",buf[i]);
        } 

出处:九度OJ-1461:Tempter of the bone
2. 关于scanf()
使用以下代码,中间带个空格,可以将输入流中两个非空白字符之间的空白字符(’\n’、’\t’、’ ‘)给抛弃掉。(cin即使抓取%c类型时也无需这种特殊操作,默认不吸收空白字符)
scanf(“%c %c”,&a,&b);
若格式说明符为%d等,则完全无需空格直接默认抛弃空白字符(与cin一致)

        for (int i=0;i<n;i++){
            scanf("%s",buf[i]);
        } 

这条与1.有点重复了。
3. 啊

scanf("%4d",&x);

意为只取目前输入流中的四位(不计前后的空白字符)

printf("%04d",x);

意为0填充输出宽度为4的整数x(默认右对齐)

printf("%.4lf",x);

意为输出小数点后4位,不足用0填充。
另:关于printf(“”)

无 右对齐,左边填充0和空格  
- 左对齐,右边填充空格  
+ 在数字前增加符号 + 或 -  
将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用-)  
空格 输出值为正时冠以空格,为负时冠以负号  
# 当type=c,s,d,i,u时没有影响  
type=o,x,X时,分别在数值前增加'0',"0x","0X"  
type=e,E,f时,总是使用小数点  
type=g,G时,除了数值为0外总是显示小数点  
3.width 用于控制显示数值的宽度,取值和含义如下  
n(n=1,2,3...) 宽度至少为n位,不够以空格填充  
0n(n=1,2,3...) 宽度至少为n位,不够左边以0填充  
* 格式列表中,下一个参数还是width  

4.写完cmp函数或者重载完<后,想要反序排列,只需要sort(v.rbegin(),v.rend()); 。(前提:使用vector或者deque容器)
5.想要读取空格时要使用gets()
scanf是读取到空白字符截断的,不能读取空格。故应该使用gets。
gets的用法:
gets(str);,遇到\n或EOF结束,将’\n‘转化为字符串末尾的’\0’,’\n’不保留在输入流中。成功时返回值为str,失败或者遇到EOF时返回NULL

scanf gets 对比:
  gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。
  scanf :当遇到回车,空格和tab键会自动在字符串后面添加’\0’,但是回车,空格和tab键仍会留在输入的缓冲区中。
  gets:可接受回车键之前输入的所有字符,并用’\n’替代 ‘\0’.回车键不会留在输入缓冲区中

6.使用以下char的方法替代string的方法:

strcpy(char *dst,char *src);//char[]
//替代
str1=str2;//string
strncpy(char *dst,char *src,int npos);//char[]
dst[npos]='\0';
//替代
tempStr=str.substr(int pos,int npos);//string

7.能标记尽量不要去各种push结构体!消耗太大!

8.即使代码段相似度很高。。。尽量也用写的别复制粘贴。。。由于参数没改过来出了一堆bug找都找不到。。。

9.c++的vector erase中间的元素也不会出现空洞!反正会自动修正就对了(与java的vector::remove()一个样)。遍历erase的时候记得erase之后i要回退。

10.
· 字符串并没有说不包含空格!所以得用gets
·由于用了gets,所以得考虑每个样例在用gets之前都得吸收掉前面的回车!!!!!!!这里出bug调了很久!!

11.
·关于优先队列priority_queue,无论是小根堆还是大根堆,其排序时候调用的运算符都是<,故对结构体重载<即可
·对stack、queue等,top()方法返回的是一个常引用噢!(由栈、队列的性质所决定)。所以要调用这个常引用的方法就得把方法写成常成函数!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值