今天,在一个受欢迎的问题解决站点中,我提交了一个问题的解决方案,然后查找了一个更快的代码,以查明他/她的代码比我的代码运行得更快的原因。总体算法是相同的,但是我发现的主要区别如下。
static string x = [](){
std::ios::sync_with_stdio(false);
cin.tie(nullptr);
return "";
}();
我也不明白cin.tie(nullptr)
在这里做什么。我读到了
ostream* tie (ostream* tiestr);
但无法弄清楚这行在这里做什么。
请注意,我已经知道std::ios::sync_with_stdio(false)
不再浪费时间来将printf/scanf
的I / O操作与C ++计数器部分cin/cout
同步。
我已经猜到了,甚至在主函数运行之前,块中的代码都已执行,但是我不知道该构造背后的真正原因是什么。
对不起,我的英语不好,非常感谢您的帮助。
答案 0 :(得分:3)
您猜到了大多数:
std::ios::sync_with_stdio
cin.tie(nullptr)
将使cin
与cout
解除绑定。见下文来自cplusplus.com:
绑定流是一个输出流对象,该对象在刷新之前 该流对象中的每个I / O操作
我想这个问题来自cin
的输入,并且您在cout
上提供了答案,从现在开始,写入cout
会更快。