为了兼容c语言的输入输出,c++里面采用tie将输入输出流经行绑定,所以cin/cout并不是独立的。当执行cin时,cout同时会被执行。反之亦然。
by defalut,cin is tied to cout,and wcin is tied to wcout。
默认情况下,cin和cout是绑定在一起的,wcin和wcout是绑定在一起的。
也就是说默认情况下,我们执行
int a;
cin>>a;
用户输入abcd'Enter'
执行的过程是,先将abcd输入到流缓冲区中,然后从缓冲区中输出到a中。
同样
cout<<"Enter a number";
执行的过程是,先将"Enter a number."输入到缓冲区中再从缓冲区中输出到控制台上来。
由此可见,cin和cout其实并不是我们想象中的相反对立的两个函数。相反,这两个函数,其实执行的是同一个过程,都包含输入和输出。(前提是在默认情况下)
正是由于这种情况,当我们遇到数据集超大造成 cin TLE的时候,我们可能会认为这是cin的效率不及scanf的原因。其实是输入缓冲区,flush缓冲区,占用了时间。
接下来介绍一下,相关的库函数tie
看看标准库里面tie函数的定义,there's tw