快速输入/输出,用于竞争性编程

时间:2020-09-21 15:37:02

标签: c++

我看到人们广泛使用此代码段来在竞争性编程中实现快速的输入/输出

ios_base::sync_with_stdio(false);
cin.tie(NULL);

尽管我主要从这里了解它的作用:

Significance of ios_base::sync_with_stdio(false); cin.tie(NULL);

我想知道为什么不包括这句话

cout.tie(NULL);

i.e”这对程序有何影响或达到了与目标相同的目的

cin.tie(NULL);

还必须使用NULL或false代替0和1。

2 个答案:

答案 0 :(得分:5)

cout绑定到cin,而不是相反。

cout绑定到cin意味着从cout读取时cin被自动刷新。

cout.tie(nullptr);毫无意义,因为cout.tie()已经是nullptr


NULL等效于0。表示空指针的C ++类型安全方法是nullptr

答案 1 :(得分:4)

this示例和docs中可以看到,std::cerrstd::cout在默认情况下都与cout.tie(NULL)绑定,但是关系是单程。由于绑定的流已经是nullptr,因此无需调用1。该声明将无效。

您将无法使用参数tiestd::ostream获取指向0的指针。 NULL / false / std::cout.tie(&std::cerr)都可以通过隐式转换来解开流,但要将两个流绑定在一起,则需要使用.eslintrc.js之类的东西。