Boost 라이브러리 사용을 배우기 시작하는 곳은 어디입니까?


16

최근에 내가 일하고있는 프로젝트에서 부스트를 사용할 수있게되었으며 그 경험이 많지 않습니다. 라이브러리에는 많은 부분과 기능이있어서 학습을 시작하는 위치를 알기가 어렵습니다. 특히 프로덕션 코드를 작성하는 동안 배우려고 노력하기 때문에 (너무 느려질 수는 없습니다).

누군가가 일반적으로 매일 프로그래밍하는 데 매우 유용한 약 3 ~ 5 가지 기능을 나열하고 유용한 이유를 밝힐 수 있다면 대단히 감사하겠습니다. 그런 다음 그것들을 배우고 사용할 수 있습니다. 적어도 도서관에서 발판을 마련하고 그것을 배우고 적용하기 시작하는 친절한 장소를 제공 할 것입니다 :)

미리 감사드립니다!


이 맥락에서 '도서관의 발자국'이라는 문구를 이해하지 못합니다. 책에 어떤 문제가 있습니까? 일반적인 공급 업체의 주제에는 몇 가지가 있으며 팀 서가에 배치해야합니다.
aquaherd

나는 프로그래밍에 대한 모든 시간을 읽었습니다. 나는 그것이 가지고있는 모든 것을 알고 있는지, 순간에 유용한 지 여부를 알기 위해 책이나 참조 안내서를 다시 읽을 시간이 없습니다. 여기저기서 사용하고 작업하는 동안 천천히 집어 들고 싶습니다. 실제로 유용한 부스트 구성 요소의 몇 가지 핵심 예가 필요했습니다. 예를 들어 Scott Meyers의 Effective C ++는 shared_ptr 논스톱 (및 그 밖의 다른 것)에 대해 이야기합니다. 부스트에서 특히 도움이되는 것은 무엇입니까?
John Humphreys-w00te

BOOST_FOREACH 매크로, 관찰자 ​​/ 구독자 패턴, 정규 표현식, 날짜 / 시간 파서 (패싯)를 개인적으로 매우 좋아했지만 코드를 사용하여 기존 부스트를 수정하거나 DeadMG가 설명한대로 우연히 만났습니다. 나는 빙산의 일각을 부풀 렸지만 STL의 자연스러운 연속처럼 느껴졌습니다.
23

답변:


8

사전 TR1 컴파일러를 사용하는 경우 스마트 포인터

boost::shared_ptr
boost::weak_ptr
boost::scoped_ptr 

boost::scoped_array
boost::shared_array

컴파일러에 이미 스마트 포인터가있는 경우이를 사용하십시오.
스마트 포인터가없는 C ++은 기본적으로 C ++이 아닙니다.

ptr_contaier 라이브러리를 향상시킵니다.

모든 STL 컨테이너는 포인터를 보유하기 위해 특별히 다시 구현되었습니다. 컨테이너는 포인터를 소유 할뿐만 아니라 컨테이너가 파괴 될 때 모든 포인터를 자동으로 파괴합니다. 그러나 일반적인 객체 참조 (포인터가 아닌)로 요소에 대한 액세스도 제공하므로 래퍼 기능이없는 표준 알고리즘에서 객체를 쉽게 사용할 수 있습니다.

부스트 람다 라이브러리. (아래 의견 참조)

STL 펑터 및 바인더는 간단한 작업에 적합합니다. 그러나 boost :: lambda는 다음 단계로 표준 알고리즘을 사용할 때 훨씬 간단하게 만듭니다.

boost :: any 및 boost :: variant

정확한 유형을 몰라도 개체를 잡아야하는 경우

멀티 인덱스 컨테이너

여러 가지 다른 방법으로 요소에 액세스 할 수있는 컨테이너.
객체 벡터와 빠른 검색 벡터를위한 별도의지도가있는 시대는 지났습니다. 이렇게하면 컨테이너에 요소를 삽입 / 삭제할 때 두 컨테이너를 유지하기 위해 작성해야하는 상용구가 줄어 듭니다.

boost :: lexical_cast

아마도 실생활에서 가장 유용하지는 않지만 많은 재미는 boost :: lexical_cast입니다. 객체에 문자열로 /로부터 변환합니다 (해당 유형에 적절한 << 및 >> 연산자가 정의되어있는 한). 디버깅시 오류 메시지를 덤프하는 데 매우 유용합니다.


1
Boost.Phoenix 는 공식적으로 Boost.Lambda를 대체했으며 현재는 더 이상 사용되지 않습니다. 새 코드에 대해서는 후자를 권장하지 마십시오. :-]
ildjarn

16

부스트는 프레임 워크도 라이브러리도 아닙니다. 품질 관리, 동료 검토 라이브러리 모음입니다. 당신은 부스트를 배우지 않습니다. 라이브러리는 개별적입니다. 무언가가 필요할 때 Boost에 있는지 확인한 다음 해당 라이브러리를 배우십시오. 그게 다야. boost :: variant를 파악하면 boost :: optional을 파악할 수 없습니다.


4
부스트는 품질 레이블과 배포 세트라고 말할 수 있습니다.
Klaim

1

Boost는 라이브러리 모음입니다. 다음에 코드 kata를 할 때 Boost에서 라이브러리를 선택하면 도움이 될 것입니다. 설명서는 매우 훌륭하며 간단한 사용법을 고르는 데 아무런 문제가 없어야합니다. 더 영리한 일을하려고 할 때 더 복잡한 것들이 올 것입니다.

예 : boost :: thread call_once가있는 스레드 안전 싱글 톤.

예 : 토크 나이저를 사용하여 key : value 구성 파일을 읽습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.