간단한 질문 : 문자열이 있는데 머리글과 꼬리 문자열 (시작 부분과 끝에있는 문자열)을 추가하려면 가장 좋은 방법은 무엇입니까? 이 같은 뭔가 :C++ 문자열 추가
std::string tmpstr("some string here");
std::string head("head");
std::string tail("tail");
tmpstr = head + tmpstr + tail;
그것을 할 수있는 더 좋은 방법이 있나요?
미리 감사드립니다.
'연산자 +()'의 결과는 항상 임시 값 (rvalue)입니다. C++ 1x rvalue reference가 없다면, 결과를 더 이상 수정할 필요가 없다면 결과를 객체에 복사하는 대신 const 참조에 저장하여 하나의 엄청난 복사를 최적화 할 수 있습니다 :'const T & result = a + b;'이것은 임시를 refrence에 바인딩하고 그에 따라 수명을 연장합니다. 어쨌든 컴파일러가이 복사본을 최적화 할 수도 있지만 (문자열로는 생기지 않습니다.), 아무 것도 얻을 수 없으므로이 기술을 사용하면 성능이 저하되지 않습니다. – sbi