std::move()는 어디에 쓰나요?


제가 묻고 싶은 질문은 std::move()

  1. std::move()가 무엇인지
  2. std::move()가 어떤 일을 하는지
  3. std::move()를 언제 써야 하는지

입니다.

  • 2016년 01월 15일에 작성됨

조회수 308


1 답변


좋아요
0
싫어요
채택취소하기
  1. std::move()는 C++에서 쓰는 move입니다.
  2. 인자로 들어오는 값을 rvalue의 type (Type&&)로 변환해 줍니다.
  3. 보통은 object를 전달할 때나 objectmove 하기 위해 씁니다.

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);
}
  • 2016년 01월 15일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close