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

조회수 10582회

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

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

입니다.

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기
    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);
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)