zoukankan      html  css  js  c++  java
  • 【ACM】c++在oj上做题时遇到过的坑

    前言:这里每个坑都用了我超过1个小时,好多水题都是因为这些小坑卡了1个小时,贼气

    没办法,coding能力比较弱。记下来这些教训,也让后人也看看,避开一些坑。不定期更新

    最后更新日期:2018-08-01

    1.cincout太慢导致超时

    找了很久,发现要两个命令一起用。

    ios::sync_with_stdio(false);
    cin.tie(0);   

    2.变量定义的问题(全局,局部)

     开始acm道路之后,我习惯了把很多变量放到全局变量,省去函数之间引用传递的麻烦,

    需要初始化的时候用memset,这个做法方便但其实有不安全的地方。

    那就是递归函数!因为在递归函数中,某个变量在某次递归中都有一个值,可是如果

    将它声明为全局变量,那该变量就不随着递归函数而改变,从而导致同样的代码,

    函数内使用局部变量的代码A了,而全局变量的WA了。

    3.用优先队列的时候,“greater<typename>”与 “>”中间要有一个空格,这个坑只花了我3秒

    4.在结构体、类中需要储存字符串的时候,可能导致的内存溢出错误(RE)

    我们知道,可以用 string=char[]来初始化字符串。于是有次做字典树,用节点储存一个字符串,我在节点中声明了

    个string变量,在insert的时候先new node(),然后直接让string=char[]导致RE。这是因为new的时候不知道

    string占用的空间大小所以没分配(推断,应该是),解决方法,不要在node结构体/类中声明string,

    而声明char* val; 在需要赋值的时候,使用以下代码来将字符串储存到节点中。

    1     p->val = (char*)malloc((strlen(v)+1)*sizeof(char));//p是指向node的指针,v是待储存的字符串
    2     strcpy(p->val,v);
  • 相关阅读:
    csu1217: 奇数个的那个数
    小试SAS 判别分析
    bfs poj2965
    STL set常用操作
    csu1002 A+B(III)
    HDOJ 1002 的几种方法
    SQL知识积累
    CSV文件格式介绍
    ASP.net Web Form 知识积累
    C# 位域[flags] 枚举
  • 原文地址:https://www.cnblogs.com/VsKendo/p/9360908.html
Copyright © 2011-2022 走看看