std::move()는 어디에 쓰나요?
조회수 10584회
제가 묻고 싶은 질문은 std::move()
std::move()
가 무엇인지
std::move()
가 어떤 일을 하는지
std::move()
를 언제 써야 하는지
입니다.
1 답변
-
std::move()
는 C++에서 쓰는 move
입니다.
- 인자로 들어오는 값을
rvalue
의 type (Type&&)
로 변환해 줍니다.
- 보통은
object
를 전달할 때나 object
를 move
하기 위해 씁니다.
C++
의 std::move()
는 copy
를 피하기 위해 씁니다..
예를 들어, 다음의 두 swap
함수는 다른 방식으로 동작합니다.
template <class T>
swap1(T& a, T& b) {
T tmp(a); // a의 copy가 2개가 됨.
a = b; // b의 copy가 2개가 됨 (+ a의 copy 중 하나가 사라짐)
b = tmp; // tmp의 copy가 2개가 됨 (+b의 copy 중 하나가 사라짐)
}
//move를 쓰면 copy하지 않고 swap이 가능해 짐
template <class T>
swap2(T& a, T& b) {
T tmp(std::move(a));
a = std::move(b);
b = std::move(tmp);
}
답변을 하려면 로그인이 필요합니다.
프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.
(ಠ_ಠ)
(ಠ‿ಠ)
댓글 입력