boost optional 예제

std:::선택 사항 std::::::::::변형 및 std::string_view와 함께 C++ 어휘 유형의 일부입니다. main() 내가 비어 있는지 여부를 확인합니다. 비어 있지 않으면 i에 저장된 번호는 operator*로 액세스됩니다. 부스트::선택적 포인터처럼 작동하는 것처럼 보입니다. 그러나 예를 들어 boost::optional의 값은 복사 생성자에서 복사되고 포인터가 가리키는 값을 복사하지 않으므로 boost::optional을 포인터로 간주해서는 안 됩니다. 부스트::선택적 문서: 종이에서 선택적 사용 시기: N3793 – 선택적 개체를 나타내는 유틸리티 클래스를 추가 하는 제안 (개정 4) – 2013-10-03 에서 다음 표를 발견 했습니다 (그리고 현재 가능 하면 그것을 수정 하려고 상태)를 참조하십시오. 클래스 템플릿 std::optional 은 선택적 포함된 값, 즉 존재하거나 존재하지 않을 수 있는 값을 관리합니다. Boost.optional 누락 된 값에 대 한 nullptr의 사용 보다 안전, 경우에 따라 선택적 사용 하는 결정 흐리게 될 수 있습니다, 오류 처리에 대 한 그것을 사용 하지 말아야. 값이 비어 있고 프로그램의 정상적인 상태인 경우 가장 적합합니다. 선택적 일반적인 사용 사례는 실패할 수 있는 함수의 반환 값입니다. std::pair와 같은 다른 접근 방식과 달리 선택적 개체는 구성 비용이 많이 드는 개체를 잘 처리하고 의도가 명시적으로 표현되기 때문에 더 읽기 쉽습니다.

옵션에 정의된 주문이 T에 정의된 순서가 있는 즉시 있습니다. 규칙에 따라 빈 선택자는 다른 모든 값보다 작은 것으로 간주됩니다. 이 것 자체는 의미가 많지 않지만 정렬된 컨테이너에서 선택적 옵션을 사용할 수 있도록 순서를 제공합니다. 선택적 참조가 없습니다. 참조 형식을 사용하여 선택적 을 인스턴스화하면 프로그램이 잘못 형성됩니다. 또는 T 형식의 std::reference_wrapper의 선택적 옵션을 사용하여 참조를 보유할 수 있습니다. 또한 태그 형식 std::nullopt_t 또는 std:::in_place_t. 클래스 템플릿 부스트:::선택적 유효한 값을 가질 수 있거나 없는 개체에 대 한 래퍼입니다. 선택적 Object의 구성은 다음과 같습니다: 사이드 노트로 이 코드는 boost::optional이 필요하지 않습니다. Boost.Optional은 부스트::선택 옵션을 제공하므로 선택적 반환 값을 명확하게 표시할 수 있습니다. 위의 코드에서는 문자열을 포함하는 선택적 함수를 반환하는 함수를 정의합니다. 사용자의 별명을 사용할 수 있는 경우 문자열을 반환합니다.

그렇지 않은 경우 nullopt를 반환합니다. 나중에 우리는 선택 적 에 할당하고 어떤 값이 포함되어 있는지 여부를 확인 (그것은 bool로 변환)할 수 있습니다. 옵션정의 연산자*를 정의하여 포함된 값에 쉽게 액세스할 수 있습니다. int에 대한 포인터는 자연스럽게 “null”이므로 선택 사항으로 래핑하면 사용하기가 매우 어렵습니다. 물론 함수 시작 시 빈 옵션을 선언하고 계산된 값이 있는 경우 다시 할당할 수도 있습니다. 따라서 위의 예제를 다시 작성할 수 있습니다. Boost.Optional은 초기화및 초기화되지 않은 개체에 대해 말합니다. 멤버 함수 get()은 연산자*와 동일합니다. Uff…! 그것은 선택 적 에 대한 텍스트를 많이했지만, 여전히 모든 :) 다음은 문자열 중 하나에서 분명히 실패할 int로 문자열을 변환하는 예입니다.

Sorry, comments are closed for this post.