개체의 내부 구성을 수행하기위한 몇 가지 인수를 전달하려고합니다. 나는 연관 컨테이너에서 emplace의 사용법에 대한 이론적 근거를 얻지 못하거나 잘못된 방식으로 생각하고 사용하고있을 수도 있습니다. 다른 사람이 사용하기 위해 코드 스 니펫을 공유 할 수 있다면 좋을 것입니다.연관 컨테이너에서 emplace (args && ...) 사용
map과 같은 연관 컨테이너는 항상 kind pair()의 객체를 저장하고 emplace 함수는 인수를 전달하여 객체의 생성자 (항상지도의 경우 쌍)를 호출한다고 말합니다. 함수에 가변적 인 서명이 있더라도 두 개의 인수 (키, 값)를 제공하도록 제한됩니까?
인수를 전달하기 전에 emplace와 boost 컨테이너를 사용했을 때 : emplace (arg1, arg2, arg3, arg4) // 여기서 arg2, arg3, arg4는 객체를 구성하는 데 사용되고 arg1은 키입니다.
새로운 GCC-4.6 C++ 11 컴파일이 나누기하지만 지금은 같은 것을 할 필요가 : 에 갖다 두도록 (ARG1,하여 MyObj (ARG2,에서 arg3, arg4을)); // 같은 코드가 작동하도록합니다;
그래서 새로운 emplace는 부스트처럼 현명한 구성을하지 않습니까? 그리고 쌍은 항상 그들의 생성자에 대해 두 개의 인수를 허용하기 때문에지도에 2 개의 인수 만 제공하도록 제한됩니다.
th에 여전히 기능이 있습니다. 표준 라이브러리는 C++ 11을 모두 완벽하게 구현하지 못합니다.첫 번째 버전 ('emplace (key, arg1, arg2, arg3)')이 작동해야합니다. –
'std :: pair'는 [piecewise construction] (http://en.cppreference.com/w/cpp/utility/pair/pair)을 지원합니다.하지만 그렇게 매력적이지는 않습니다. – Cubbi