Подтвердить что ты не робот

Используя "<<" или "+" для объединения строк при использовании "cout",

Я видел, как люди выставляют разные строки вместе, используя как "< < и" +".

cout << firstname << lastname << endl;

против

cout << firstname + lastname << endl;

Лучше ли использовать "< < или это не имеет большого значения?

4b9b3361

Ответ 1

Определенно, используйте << - конкатенация строки создаст копию двух строк, вставленных вместе. Независимо от того, выделяет ли он дополнительную память сверху, речь идет о том, как строки реализованы в библиотеке С++, но если имя и фамилия "достаточно длинны" (более 8-16 символов вместе), то он, скорее всего, выделит память (а затем снова освободите его, когда временная копия больше не нужна).

Оператор << будет иметь очень мало накладных расходов в сравнении, поэтому, без сомнения, это лучше.

Конечно, если вы не делаете тысячи этих вещей, маловероятно, что у вас будет ощутимая разница. Но хорошо, чтобы не тратить процессорные циклы, вы никогда не знаете, какое хорошее использование они могут быть где-то еще...;)

Ответ 2

Я бы сказал, что лучше использовать << в этом конкретном случае. В противном случае конкатенация приводит к временному, который мог бы распределять память без уважительной причины.

Ответ 3

Каскадный << - лучший выбор.

Для производительности, как и другие упомянутые ады, оператор << не обязательно вводит какой-либо временный объект. Каскадный << можно рассматривать как трубу.

Также иногда вы не можете использовать +, если ваш левый операнд не является определяемым пользователем типом, если вы не предоставите соответствующий operator+. Например.

cout << "Hello, " << lastname << endl;// Works
cout << "Hello, " + lastname << endl; // This won't work