出错整理

自己曾经出错的地方!!全是精华!!!

 

1、加括号问题:不能写成这样if(6&8==0)...   应该注意加括号,把6&8看成整体结果if((6&8)==0)...

 

2、把变量 数组的声明放在while(T--){}里面!! 一定要注意! 如果放在外面执行下一个样例的时候数组里面的内容是不会变的!

 

3、检查是否多加了分号!!或者符号打错了!!一定要看好细节啊 有时候简单题可能不是思路错了  可能是细节没注意到 

4、在cin>>后使用getline无法读取到数据,用到getline读入数据时一定要想着要再cin后面多写一个getline!!!

 

结果就是这样的。原因是因为 cin读入数据之后,遇到换行字符终止cin读入。但是换行字符还保存在输入流里面,getline读入的时候就会把换行字符读入进去   不会再读字符串。

读入数据一直是我的问题 还有就是像 scanf  cin getline等等读入数据时,尤其是读入字符时要特别注意,出现问题一定要先检查是不是读入数据的问题。

 

5、函数名字一定不要写错了!! atoi 将字符串转换为int (不支持string)  iota()三参数,将数字转换为字符串。  codeblocks不支持c++string的 to_string 等

itoa()原型:  char *itoa( int value, char *string,int radix);

value:要转换的数据。
string:目标字符串的地址。
radix:转换后的进制数,可以是10进制、16进制等,范围必须在 2-36。

 

6、cin cout 在 ZOJ上交题也会TLE,用ios::sync_with_stdio(false);cin.tie(0);也没有用  改为scanf就过了。

 

7、lower_bound 的使用,一定要对准查找的类型。  如果要在结构体数组中查找,那么被查找的类型应该为结构体类型的 而不是int类型的!!

 

8、定义排序规则时一定不能出现变量重名的情况!

 

9、声明大数组一定要放在外面,否则程序运行时会卡住。放外面如果题目要求多组样例,还要记得每次加一个memset。

 

10、最好在定义变量的时候赋初值为0

当时就是因为maxlength没有赋初值导致一种特殊情况00的时候给漏掉WA了。。。服了。。。 

 

11、今天用string 的substr()函数时报错,这是因为substr访问了非法地址!! 有时候真的太大意了 把代码放下面提醒自己以后别再犯错了。

 

 

12、注意数字和字母之间的转换!!!  今天在数字和字符之间的转化遇到了问题! 例如   cout<<char(10+'0')<<endl;   输出结果不是 10 实际结果是 “:” 符号!!  一定要特别注意这一点!当数字是个位数是 可以用数字+‘0’ 但是当数字的位数大于一位时,就要按位转化!!

当然也可以用itoa函数! 

 

 

最后附上一张ASCII表!

 

13、输入以空行结束! The input is terminated by an empty line.  

写法:      while(getline(cin,s)&&s!=""

 

14、 注意sqrt的参数类型 容易出现编译错误 

 

15、字符和数字之间转化!!!错了无数遍以后一定要记住!

(1)、数字转为字母    'A'/'a'+数字     (还要注意是否要+-1)

(2)、数字转为为数字字符     '0'+ 数字

下面是我没想出来办法的地方

 

16、好好理解递归函数中return 到底返回到哪里!  尤其是做深搜题目的时候

 递归函数中return是返回到上一层调用该函数的地方 而不是直接返回到主函数!

 

17、慎用memset!! 不能用于赋值只能用于初始化内存。以后用memset只用于初始化0 其他千万不要用!

这是今天出错的地方!

下面是网上的解释:

其实说的就很明白了,只能对内存进行初始化,并不能赋特定的值。所以以后最大值可以用0x3f3f3f3f 或者1<<30

初始化最大值用 memset(int,0x3f,sizeof(int));   如下,

 

18、关于bfs 和dfs中的标记数组 vis[ ][ ]  总是忘了写!! 

以后一定要记得写啊!!!

还有在bfs中如果要输出中间过程点,用vector模拟队列时,在while循环中一定要写出这句退出条件  否则可能会 runtime error!!!

19、使用STL容器时,当容器中的元素类型为结构体类型时,必须写出排序规则!!! 不知道是不是这样 先这样记吧

今天出错的地方   加了一个排序规则就过了  没加之前无法编译一直报错。


20、以后一定要注意基础算法,今天做到用归并排序求逆序数时,才发现自己当初学的时候根本没好好听。学数据结构的时候没好好听,学算法的时候也没好好听。你之前没好好学的东西,早晚有一天都会返还给你。好好学吧。 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值