4

同じものだと思っていたのですが、オンラインの審査員にコードを送ったら( でendl(cout))「不正解」と判定され、もう一度 で送信してみるcout << endlと、審査員がコードを受け入れてくれました。これらのコマンドの違いを知っている人はいますか?

4

4 に答える 4

3

私が知っているものはありません。

std::endlストリームを受け取り、ストリームを返す関数です。

ostream& endl ( ostream& os );

に適用するとstd::cout、関数がすぐに適用されます。

一方、署名付きのstd::basic_ostreamオーバーロードがあります。operator<<

template <typename C, typename T>
basic_ostream<C,T>& operator<<(basic_ostream<C,T>& (*pf)(basic_ostream<C,T>&));

これにより、関数もすぐに適用されます。

std::cout << std::endlしたがって、ストリームはより慣用的ですが、技術的には違いはありません。ただし、ジャッジボットは単純すぎて、それを認識していない可能性があります。

于 2012-03-04T15:58:22.217 に答える
2

唯一の違いは、endl(cout)がグローバル関数と見なされるのに対し、cout << endlではendlがマニピュレータと見なされることです。しかし、それらは同じ効果があります。

于 2012-03-04T15:56:54.420 に答える
1

これら 2 つの形式の動作に違いはありません。どちらも同じendl関数を参照しており、マニピュレータ ( cout << endl) またはフリー関数 ( endl(cout)) として使用できます。

于 2012-03-04T15:58:08.163 に答える