Какая есть разница между /n и endl?
\n не везде является переносом строк. endl - более универсальное решение, гарантированно работающее на всех платформах. Кроме того endl зовёт flush, который нужен для гарантированной записи (обычно запись происходит не сразу, а буферизуется).
Используйте std::endl тогда и только тогда, когда Вам одновременно нужен и std::flush (например, консольный вывод). В остальных же случаях это может оказаться причиной потери производительности.