Простой вопрос: если у меня есть строка, и я хочу добавить к ней строки начала и конца (одну в начале, а другую в конце), как лучше всего это сделать? Что-то вроде этого:
std::string tmpstr("some string here");
std::string head("head");
std::string tail("tail");
tmpstr = head + tmpstr + tail;
Есть ли лучший способ сделать это?
Заранее спасибо.
operator+()
всегда является временным (rvalue). При отсутствии ссылок на значение rvalue C++1x, если вам не нужно дополнительно изменять результат, вы, вероятно, можете оптимизировать одно лишнее копирование, сохранив результат в константной ссылке вместо того, чтобы копировать его в объект:const T& result = a + b;
Это привяжет временный для ссылки и соответственно продлить срок его службы. Хотя ваш компилятор может оптимизировать эту копию в любом случае (я бы сказал, что маловероятно со строками), так что вы можете ничего не выиграть, использование этого метода не повредит производительности. - person sbi   schedule 17.08.2009