Используя "<<" или "+" для объединения строк при использовании "cout",
Я видел, как люди выставляют разные строки вместе, используя как "< < и" +".
cout << firstname << lastname << endl;
против
cout << firstname + lastname << endl;
Лучше ли использовать "< < или это не имеет большого значения?
Ответ 1
Определенно, используйте << - конкатенация строки создаст копию двух строк, вставленных вместе. Независимо от того, выделяет ли он дополнительную память сверху, речь идет о том, как строки реализованы в библиотеке С++, но если имя и фамилия "достаточно длинны" (более 8-16 символов вместе), то он, скорее всего, выделит память (а затем снова освободите его, когда временная копия больше не нужна).
Оператор << будет иметь очень мало накладных расходов в сравнении, поэтому, без сомнения, это лучше.
Конечно, если вы не делаете тысячи этих вещей, маловероятно, что у вас будет ощутимая разница. Но хорошо, чтобы не тратить процессорные циклы, вы никогда не знаете, какое хорошее использование они могут быть где-то еще...;)
Ответ 2
Я бы сказал, что лучше использовать << в этом конкретном случае. В противном случае конкатенация приводит к временному, который мог бы распределять память без уважительной причины.
Ответ 3
Каскадный << - лучший выбор.
Для производительности, как и другие упомянутые ады, оператор << не обязательно вводит какой-либо временный объект. Каскадный << можно рассматривать как трубу.
Также иногда вы не можете использовать +, если ваш левый операнд не является определяемым пользователем типом, если вы не предоставите соответствующий operator+. Например.
cout << "Hello, " << lastname << endl;// Works
cout << "Hello, " + lastname << endl; // This won't work