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

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

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

입니다.

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);
    }
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.