日常小问题(技巧)汇总

1 scanf 为什么比cin快?

比较合理的解释:默认情况,cin与stdin总是保持同步的,也就是说这两种方法可以混用,而不必担心文件指针混乱,同时cout和stdout也一样,两者混用不会输 出顺序错乱。正因为这个兼容性的特性,导致cin有许多额外的开销,如何禁用这个特性呢?只需一个语句 std::ios::sync_with_stdio(false);,这样就可以取消cin于stdin的同步了,此时的cin就与scanf差不多 了。
————————————————
版权声明:本文为CSDN博主「穆江浩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012841718/article/details/53509883

2 全局变量初始化

https://www.cnblogs.com/catch/p/4314256.html

3 #LC8:字符串转换整数

模拟题,有一点,越界处理

class Solution {
public:
    int myAtoi(string s) {
        int n = s.size();
        int sign = 1;
        long long ans = 0;
        int i = 0;
        while(i < n && s[i] == ' ') i++;
        if(i == n) return 0;
        if(s[i] == '-') 
        {
            sign = -1;
            i++;
        }
        else if(s[i] == '+') i++;
        else if(isalpha(s[i]))
            return 0;
        while(i < n && isdigit(s[i]))
        {
            int t = s[i] - '0';
            if(ans > (INT_MAX - t) / 10)//送到右侧判断, 值得学习
                return sign == 1 ? INT_MAX : INT_MIN;
            else 
                ans = ans * 10 + t;;
            i++;
        }
        if(sign == -1)
            ans = 0 - ans;
        return ans;
    }
};

你可能感兴趣的:(error,bug)