Разница между endl и ‘\ n’

Возможный дубликат:
C ++: «std :: endl» против «\ n»

У меня есть простая программа, которую я протестировал, и я понимаю, что endl наносит ущерб моей программе. Используя endl, моя программа работала в Более 100 мс работая с '\n'время упало до ~ 50мс.
Может кто-нибудь сказать, почему такая разница?

Постскриптум Я читал другие посты, которые как-то объясняли, что каждый из них делает, но делает std::flush действительно так много времени?
Или может быть другое возможное объяснение?

4

Решение

endl имеет очень дорого flush() операция

27.7.3.8 Стандартные манипуляторы basic_ostream [ostream.manip]

namespace std {
template <class charT, class traits>
basic_ostream<charT,traits>& endl(basic_ostream<charT,traits>& os);
}
1 Effects: Calls os.put(os.widen(’\n’)), then os.flush().
2 Returns: os.
2

Другие решения

std::endl пишет новую строку, и очищает буфер. Как вы обнаружили, очистка может быть довольно дорогой операцией.

6

По вопросам рекламы [email protected]