문제

Boost Lambda 라이브러리를 사용하여 프로그래밍을 시작하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

C ++ 언어 및 라이브러리의 경계 내에 나머지 STL 알고리즘 함수 템플릿을 사용하여 먼저 프로그래밍에 사용되는 것이 좋습니다. 부스트에 가장 일반적인 용도 중 하나는 다음과 같은 것이 핵무기 클래스를 내려 된 표현식으로 대체하는 것입니다.

라이브러리 문서 자체는 다음과 같은 내용의 최전 예제를 제공합니다.

for_each(a.begin(), a.end(), std::cout << _1 << ' ');

어디 std::cout << _1 << ' ' 호출 할 때 첫 번째 인수를 cout 개울. 이것은 당신이 사용자 정의 functor 클래스로 할 수있는 일입니다. std::ostream_iterator 또는 명백한 루프이지만 부스트 :: Lambda는 적어도 기능적 프로그래밍 개념에 익숙한 경우 간결하고 명확성을 얻습니다.

STL을 사용하면 Boost :: Bind and Boost :: Lambda를 향해 중력이 있습니다. 다음과 같은 것들에 정말 편리합니다.

std::sort( c.begin(), c.end(), bind(&Foo::x, _1) < bind(&Foo::x, _2) );

당신이 그 시점에 도달하기 전에, 그다지 많지는 않습니다. 따라서 STL 알고리즘을 사용하고 자신의 기능을 작성한 다음 Boost :: Lambda를 사용하여 인라인 표현식으로 번역하십시오.

전문적인 관점에서 볼 때, Boost :: Lambda를 시작하는 가장 좋은 방법은 Boost를 사용하는 것입니다 :: 바인드 이해와 받아 들여지는 것입니다. 부스트에서 자리 표시자를 사용하는 것은 :: 바인드 표현식은 "Naked"Boost :: Lambda 자리 표시 자보다 훨씬 덜 마술처럼 보이며 코드 검토 중에 더 쉽게 수용 할 수 있습니다. 기본적인 부스트를 넘어서는 것 :: Lambda 사용은 출혈에 대한 C ++ 상점에 있지 않는 한 동료로부터 슬픔을 느낄 가능성이 높습니다.

배 밖으로 가지 마십시오 - 거기 ~이다 시대와 장소는 어디에서 for-고리 진짜 올바른 솔루션입니다.

다른 팁

의존합니다. 이미 기능적 프로그래밍 개념에 정통하고 있습니까? 그렇지 않다면, 기능적 기능을 갖춘 절차 적 언어 대신 기능 프로그래밍을 위해 설계된 언어로 시작하는 것이 좋습니다. 기능적 스타일로 코딩하는 데 익숙하지 않은 경우 더 어렵다 반드시, 그러나 그것은 확실히 다릅니다), 당신은 구문과 싸우는 데 더 많은 시간을 보내고 일을 끝내는 것을 배우는 데 시간이 충분하지 않을 것입니다.

어디서부터 시작 해야하는지, 나는 체계에서 기능적 치아를 자르지 만 좋은 옵션이 많이 있습니다.

합리적으로 최근 컴파일러로 작업하는 경우 Boost를 사용할 수 있습니다. 컴퓨터에 이미없는 경우 설치하십시오 (sudo apt-get Unbuntu에 libboost-dev를 설치하고 Windows에있는 경우 binaries를 binaries를 받으십시오). 읽기 문서그런 다음 사용할 수있는 상황에 대한 기존 코드를 살펴보십시오. 예를 들어 작은 코드가있는 함수를 매개 변수화 한 경우 제거 할 수있는 코드 복제가 많이 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top