shiro

C++std::cin,std::cout 对题目时间的影响
static const auto _____ = []() { ios::sync_with_std...
扫描右侧二维码阅读全文
16
2018/08

C++std::cin,std::cout 对题目时间的影响

static const auto _____ = []()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    return nullptr;
}();

在刷leetcode时,总发现自己的算法和之前的差不多,但是少了这一句,时间可以差到一倍。
我感觉这个东西在项目中的用处可能不是特别大,不过在这种OJ上还是挺管用的。
如果不用std::cin,std::cout的同学可以用printf,scanf代替,就不需要加上面的这串代码了。

接下来详细解析一下这串代码。

这个特性是C++11上的特性,使用了lambda,生成无名函数,然后调用该函数。
static标识该函数是静态函数可以限制作用域确保作用域安全,const标志该函数返回一个const对象用来确保返回对象安全,auto就简单了自动判断该lambda的返回类型,_____就是该无名函数的名称。
[]}都是属于lambda,而最后的()属于调用该lambda函数的功能。

ios::sync_with_stdio(false) 这句话的意思是:原本为了兼容C,c++用一个流的缓冲区用来同步C,取消之后,速度自然上去了
cin.tie(nullptr)在C++中 cin与 cout 是绑定的,也就是说,每次输入或者输出的时候都要刷新flush,导致io花费大量时间,取消绑定之后减少了时间

Last modification:August 27th, 2018 at 02:37 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment