예를 들어 이동 의미를 지원하는 std::list
을 사용합니다.임시 개체를 현재 위치로 지정하는 작업을 줄이면
std::list<std::string> X;
... //X is used in various ways
X=std::list<std::string>({"foo","bar","dead","beef"});
컴파일러는 C++ (11) 이후 임무를 수행하기위한 가장 간단한 방법은 다음과 같습니다
- 이
X
- 이
X
에 std::list
std::list
를 구성 파괴 자, 컴파일러는 f를 할 수 없습니다. 대신에 따르게 :
- 는 X
- 에게 현재 위치에서
이 분명히 다른 memcpy
을 절약하면서 할당을 제거하기 때문 contruct std::list
을 파괴한다. 두 번째 행동을 가능하고 유용하게 만드는 편리한 방법은 무엇입니까? C++의 차기 버전에서 계획 되었습니까?
내 생각 엔 C++는 여전히 쓰기를 제외하고 제공하지 않는다는 것입니다 :
X.~X();
new(&X) std::list<std::string>({"foo","bar","dead","beef"});
내가 맞죠?
QList의 기능을 모르는 사람들을 위해 std :: list를 사용하지 않는 것이 좋습니다. –
@livedeveloper :'QList'는 포인터의 배열이고'std :: list'는 링크 된리스트이기 때문에. 이들은 서로 다른 할당 속성을 가진 매우 다른 유형입니다. –
@NicolBolas :'QList'는 전적으로 demostratively 사용됩니다, 그것의 속성은별로 중요하지 않습니다. 그들의 요점은 유효합니다. –