std move 예제

반환 std:::move (t)를 명시적으로 사용 하 여; 여기서는 비관적이지 않을 것이고, 어떤 경우에도 이동이 사용될 것입니다. 컴파일러는 이제 -Wextra에 의해 활성화 된 새로운 경고 -Wredundant-move를 사용하여 지적 할 수 있습니다 : MyVector (Const MyVector & v):vector (v) {} // 이동 생성자를 잊지 마세요! std::move에 대해 „std::move에 l-값을 전달할 수 있고 r-value 참조를 반환합니다.“ r-value 참조 자체는 이동 생성자에게 전달할 수 없는 l 값이기 때문입니다. 고마워, 알렉스. std::move가 l-값을 r 값으로 변환한다는 것을 알고 있지만, 어떻게 되는지에 더 관심이 있었습니다. 나는 몇 가지 예를 직접 찾아 볼 수 있어야한다. 감사! 1) 섹션 „std::move“직전에: „하지만 어떻게? … 그래서 우리는 할 수 없습니다 …“: 원치 않는 두 배 부정적인. std::move 모든 과제를 사용하는 것이 좋습니다. 템플릿에 대해 모든 함수 또는 클래스가 템플릿을 사용하기 전에 template를 작성해야합니까, 아니면 변수와 같은 프로그램 상단에 하나의 템플릿을 만들 수 있습니까? RVO는 함수 매개 변수(입력)가 아닌 반환 값(출력)에 대해서만 사용됩니다. 이동 생성자와 이동 할당 연산자가 구현된 경우 이동 할당 연산자가 실행되도록 하는 입력 매개 변수로 이동 가능한 개체를 전달할 수 있는 많은 장소가 있습니다.

가장 중요한 것은 표준 라이브러리입니다. C++11로 업그레이드하는 동안 이동 의미 체계를 지원하도록 모든 알고리즘과 컨테이너가 확장되었습니다. 따라서 표준 라이브러리를 5규칙 의 규칙을 따르는 클래스와 함께 사용하면 중요한 최적화 향상을 얻을 수 있습니다. 당신은 필요가 없습니다. 반환 되는 개체가 l 값 인 경우에 복사 elision을 수행할 수 없는 경우 값으로 반환 이동 의미 체계를 호출 해야 합니다. 함수에 개체를 전달하거나 함수에서 개체를 반환할 때 복사본이 아닌 이동을 수행할 수 있습니다. (lvalue) 또는 일반 생성자/연산자(lvalue)를 적절히 트리거합니다. 예를 들어 C++11 키워드 noexcept는 „이 함수는 예외를 throw하지 않습니다“를 의미합니다.

그것은 밖으로 일을 최적화 하는 데 사용 됩니다. 어떤 사람들은 생성자 이동 및 이동 할당 연산자가 던져서는 안된다고 말합니다. 근거: 메모리를 할당하거나 다른 코드를 호출해서는 안 됩니다. 데이터를 복사하고 다른 개체를 null(즉, throw되지 않는 작업)으로 설정해야 합니다. 자세한 내용은 여기, 여기. v.push_back(문자열(„안녕하세요 세계“); 문자열은 rvalue (및 // std:::문자열 구현 이동 의미 체계) v.push_back(들); 매개 변수는 **rvalue** ================================로 이동을 수행할 수 없습니다. @std::벡터를 이동하면 전체 배열이 이동됩니다. 이 문서는 너무 길고 이동 의미 체계의 표면만 긁혔습니다. 다음은 향후 추가 조사할 추가 개념의 빠른 목록입니다. 위의 예에서 말 – 당신이 사용 하는 포인터 때문에 이동 의미 체계를 구현 해야 – 당신은 또한 모두 안전 하 게 이동할 수 있는 다른 클래스 멤버의 무리를 가지고, 다음 이동 생성자 내에서 그들을 이동 + 이동 할당 연산자 당신은 simp 수 있습니다.

ly use std::move, 즉 위의 MyClass에 멤버 문자열 myName이 있는 경우 이동 생성자가 될 수 있습니다: std::string구현 방법은 컴파일러에 따라 다릅니다. 클래스에 대 한 좋은 점은 그런 것 들에 대해 걱정할 필요가 없습니다. 참고로 이동 의미 체계가 구현되면 투명하게 호출됩니다.

Kommentieren ist momentan nicht möglich.

Heimleiterin:
Frau Dumke

Seeallee 3
15299 Müllrose

Tel.: 033606 / 70284
Fax: 033606 / 70285

E-Mail:
kindernester@arcor.de

» 크로스사이트 스크립트 예제
» 파이썬 쉬운 예제
» 마운트 예제
» 리눅스 opencv 예제
» 메이븐 프로젝트 예제

© 2015 by Kindernester Schlaubetal e.V. | Hosted by RB Media Group GmbH | Kontakt | Impressum