-1
어리석은 질문입니다.하지만 형이상학 적 의심을 가지고 있습니다.새 항목 인스턴스를 std :: vector에 안전하게 추가하십시오.
객체를 벡터로 푸시 할 때 객체를 미리 업데이트 할 필요가 없다고 가정 할 때 로컬 변수 사용을 피할 수 있습니까?
void addToVector(std::vector<Foo>& fooVector)
{
// Solution #1
Foo foo;
fooVector.push_back(foo);
// Solution #2
fooVector.push_back(Foo());
}
겠습니까 용액 # 2 누설 메모리는 로컬 변수가 범위 밖 않을 푸 캡슐화 있다는 것을 알고?
은 용액 # 1보다 더 효율적이다, 2 유효 용액 # 가정? (emplace_back
일 가능성이 있지만 여전히 C++ 03이 붙어 있습니다.)
일반적으로는 동일합니다. 첫 번째 변수는 벡터에 복사되고 범위를 벗어나면 소멸되는 명명 된 변수를 만듭니다. 두 번째 구문은 벡터에 복사되고 명령문의 끝에서 소멸되는 이름이 지정되지 않은 임시 문자입니다. – Peter
완벽한 답변, 감사합니다. – codeJack