2014-07-17 2 views
1

인수를 취하지 않는 생성자가있는 클래스가 있고 해당 개체의 STL 컨테이너가 있다고 가정합니다. list<Object> lst; 새 개체를 현재 위치에 삽입 할 수 있습니까?생성자 인수없이 STL constainer에 객체를 emplace하는 방법은 무엇입니까?

나는 move constructor을 사용하는 것처럼 똑같은 속도로 작동 할 것입니다. 그러나 인자없이리스트의 끝에 새로운 객체를 생성하는 기능이 없다는 것은 조금 이상합니다. 이미 그 장소에 맞는 장소가 있습니다.

실제로 가능하지 않다면 약간의 설명을 제공해 주시겠습니까?

+1

['std :: vector :: emplace_back()'] (http://en.cppreference.com/w/cpp/container/vector/emplace_back)을 사용해 보았습니까? –

답변

7

음을 사용할 수 emplace_back()는 정확히 않습니다.

그냥 lst.emplace_back();을 사용하면 해당 함수는 목록 끝에 개체를 만듭니다.

+0

감사합니다. 작동합니다. 그것은 KDevelop가'lst.emplace_back ();'을 만들 것을 제안했지만, 어떤 이유로 든 작동하지 않았다는 나의 첫 번째 직감이었습니다. 시도한 여러 버전 중 가장 단순한 것은 아닙니다. Btw. 왜 명시 적 형식 버전이 작동하지 않는지 어떤 생각? – pkubik

+0

@pkubik'emplace_back'은 생성자 인수에 의해서만 매개 변수화 된 가변 템플릿이기 때문에 이상한 제안입니다. 그래서 명백하게 이것은'Object'를 유일한 인수로 취하는 생성자가 없다면 작동하지 않습니다. – JBL

+0

어쨌든 구성 할 객체의 유형을 지정해야하는 것은 이해할 수 없습니다. 이 유형은 목록을 선언하자마자 알려집니다. – JBL

2

당신은 lst.emplace_back();