push_back의 한계
: lvalue 도 아니고, rvalue도 아님.
rvalue라고 생각했지만, 암시적 형변환을 통해서 임시객체를 만들지 않는 것을 확인할 수 있음.
임시객체를 넣자.
: 우리가 move 생성자를 호출하는 것은 내부 자원을 다른 객체에다가 완전히 이동하는 것임.
오키, 복사 생성자에서 자원을 복사하는 것보다는 좋지만,
궁극적으로 고찰한것은 그냥 함수 내의 인자를 move 하지 않고, 그냥
생성자에다가 넘겨주면 훨씬 효율 적일텐데를 생각하게 됨.
그래서 나온것이 emplace 계열 함수이고,
emplace_back 함수를 사용하자.
: 생성자와 소멸자가 단 한번만! 호출함.
주의할 점으로는 이렇게 사용하면 안됨.
: 괄호를 통해서 친절하게 인자로 보낼거야! 하고 작성했는데, 오류 발생..
- 여러가지 오류가 발생하는데, vector 내부적 설계 구조에 의해 발생함.
push_back 과 마찬가지로 임시객체를 넣게 되면, 이동 생성자 호출함.
: 반드시 emplace 계열의 함수가 push 함수보다 성능이 좋은 것은 아님.
예외가 있음.
: directX에서 사용함.
이런식으로 사용했는데, 안됨..
: 당연히 안되지, 7개의 인자를 가지고 있는 암시적 형변환 생성자가 없기 때문에.
그래서 이렇게 해봄. 생성자 구조에 맞게, 생성자 3개 사용
emplace_back 사용할 때, 임시객체를 인자로 넣는것이 아니라,
인자 를 direct로 넣자