boost 사용 예제

Comments 0 by
August 2, 2019

이제 부스트::enable_if_c 사용 없이 함수 중에서 선택할 수 있는 방법의 예를 보았습니다. POD 데이터 형식을 처리하는 일반적인 방법이있는 다음 예제를 생각해 봅시다 : 내 아내는 정규식 레시피를 사용하여 일치 문자열을 즐겼습니다. 그러나 그녀는 더 많은 것을 원했고 정규식 일치에 따라 입력 문자열의 일부를 대체 할 수있는 레시피를 홍보 할 때까지 음식을 얻지 못할 것이라고 말했습니다. 제 4 장, 컴파일 타임 트릭, 그리고 제 8 장, 메타 프로그래밍, 메타 프로그래밍에 전념했다. 이러한 장에서 기술을 사용하려고 하는 경우 메타 함수를 작성하는 데 많은 시간이 걸릴 수 있습니다. 따라서 휴대용 구현을 작성하기 전에 C++11 constexpr과 같은 보다 사용자 친화적인 방법을 사용하여 메타 함수를 실험하는 것이 좋습니다. 부스트를 사용하여 우아한 방법으로 수행 할 수있는 방법을 보자. 부스트 복사::shared_ptr은 예상대로 작동하므로 STL 컨테이너에 std::auto_ptr을 사용할 수 없지만 STL 컨테이너에서 사용할 수 있습니다. shared_ptr 데이터 멤버를 설정하지 않기 때문에 각 인스턴스의 초기 참조 수는 이제 두 개가 아닌 1개입니다. 출력의 마지막 두 줄은 클래스 가수와 노래의 인스턴스가 main()의 끝에 파괴되었다는 것을 보여줍니다.

shared_ptr 데이터 멤버가 아닌 weak_ptr 데이터 멤버를 사용하여 메모리 누수를 제거했습니다. weak_ptr은 참조 수에 영향을 주지 않지만 리소스에 임시 shared_ptr을 만들어 필요할 때 리소스에 액세스할 수 있도록 합니다. main()에서 만든 shared_ptr이 소멸되면 참조 수가 0이 되고 가수와 노래 클래스의 인스턴스가 올바르게 삭제됩니다. 요즘, 그리고 새로운 BH 패키지 덕분에, 설치 하는 경우, 편집에 R에 의해 사용 하기 위해 부스트 헤더를 제공, 그것은 단지 포함 하 여 작동 [[Rcpp::depends (BH)]] 속성 우리가 여기 처럼. Boost를 사용하여 휴대용 방식으로 기호 가시성을 관리하는 방법을 살펴보겠습니다. 은행 소프트웨어에 적합한 Boost.Random을 사용하여 완전히 무작위균일한 분포를 얻는 방법을 살펴보겠습니다. 일 년에 여러 번, 우리는 값 의 쌍을 저장하고 인덱스 할 수있는 무언가가 필요합니다. 또한 두 번째 를 사용하여 쌍의 첫 번째 부분을 얻고 첫 번째 부분을 사용하여 두 번째 부분을 얻어야합니다. 혼란? 예를 들어 보겠습니다. 우리는 어휘 수업을 만듭니다. 사용자가 값을 넣으면 클래스는 식별자를 반환해야 하며 사용자가 식별자를 넣으면 클래스는 값을 반환해야 합니다.

이 레시피에서는 두 가지 유형과 두 가지 메타 함수를 허용하는 더 높은 수준의 메타 함수인 결합을 만들려고 합니다. 병합 메타 함수는 첫 번째 형식 매개 변수를 첫 번째 메타 함수에 적용 하고 결과 형식을 boost::mpl:false_ 형식 메타 함수와 비교 합니다. 결과 형식이 boost:mpl:false_ 형식 메타 함수인 경우 두 번째 형식 매개 변수를 두 번째 메타 함수에 적용한 결과를 반환하는 경우 첫 번째 결과 형식인 boost::array는 메모리를 할당하지 않지만 반환합니다. 다섯 가지 요소를 모두 구성합니다. 5개 미만의 요소를 반환할 수 있는 방법은 없습니다. 이전 레시피에서는 부스트::바인드 사용에 대한 몇 가지 예를 보았습니다. 그것은 작은 단점이있는 좋은 유용한 도구입니다. 부스트::bind 메타함수의 펑터를 C++03의 변수로 저장하기가 어렵습니다.