[C++] std::ios::sync_with_stdio(false); cin.tie(NULL);

std::ios::sync_with_stdio(false)

这句语句是用来取消cin的同步,什么叫同步呢?就是iostream的缓冲跟stdio的同步。如果你已经在头文件上用了using namespace std;那么就可以去掉前面的std::了。取消后就cin就不能和scanf,sscanf, getchar, fgets之类同时用了,否则就可能会导致输出和预期的不一样。
取消同步的目的,是为了让cin不超时,另外cout的时候尽量少用endl,换用”\n”,也是防止超时的方法。
当然,尽量用scanf,printf就不用考虑这种因为缓冲的超时了。

cin.tie(NULL)

取消cin与cout的绑定

代码示例

LeetCode 9. 回文数

//lambda 表达式,可以立即执行,在main函数之前执行,取消输入输出同步,较快输入输出速度
int x = []() {
    std::ios::sync_with_stdio(false);
    cin.tie(NULL);
    return 0;
}();

class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0) return false;
        int sum=0,n=x;
        while(n>0){
            sum=sum*10+n%10;
            n=n/10;
        }
        if(x==sum) return true;
        else return false;
    }
};

关于lambda表达式可以见这篇文章,lambda表达式详解

猜你喜欢

转载自blog.csdn.net/lv1224/article/details/80084840