2012-04-11 3 views
12

누구나 이와 같은 작업을 수행 할 수있는 라이브러리를 아는 사람이 있습니까? magic_functor 라이브러리 제공 펑 및 A 및 B 인수학/산술 표현식을 계산하기위한 C++ functor 라이브러리

std::transform(vecA.begin(), vecA.end(), 
       vecB.begin(), 
       vecOutput.begin(), 
       // run-time specified expression 
       magic_functor<float>("exp(a/(b+3))") 
); 

는 vecA 및 vecB 통해 반복된다.

내가 직접 뭔가를 생각해 낼 수 있었지만 (너무 재미 있었을 것이다) 휠을 재발 명하는 것을 피하는 것이 더 좋다. (내 상사가 나를 죽일 수도있다.) 웹 검색에 시간을 할애했지만 법안에 맞는 것을 찾을 수는 없습니다.

유연성이 높고 빠를 필요가 있으므로 문자열을 한 번만 구문 분석 (예 : 구성시 내부적으로 실행 스택 만들기)하는 것이 가장 이상적이지만 다른 솔루션에 개방적입니다.

+2

실제로 재미있는 것 같습니다. 그것. – chris

+2

필자는 필자가 필요로하는 일종의 바이너리 펑터 인터페이스를 사용하여 라이브러리를 제안 할 수는 없다. 그러나 나는 당신의'exp (a/(b + 3))'를 다루는 람다 식을 작성하는 것이 상당히 간단 할 것이라고 생각한다. 여러 위치에서 반복해야하는 경우 가장 복잡한 솔루션 일 수는 없지만 가독성이 향상되면 나에게 도움이 될 것입니다. –

답변

4

몇 가지 옵션 (일부 작업이 필요하고 "밖으로 상자의"작동하지 않습니다) :

+0

부울과 bitwise 물건을하는 것이 좋을까요. Mathpresso는 유동성이 부족한 것 같습니다. Boost Spirit으로 내 자신의 글을 쓰는 것은 재미있는 일이긴하지만 많은 일이 될 것이며 그다지 효과적이지는 않을 것입니다. MuParserSSE를 시험해 볼 수 있을지 생각해보십시오. MuParserX보다 빠른 속도로 진행되며 후자의 추가 기능이 필요하지 않기 때문입니다. – smocking

+0

성령의 방법이 가장 유연한 방법이 될 것이라고 생각합니다. 시작하기가 조금 어렵지만, 성령의 블로그, 제가 게시 한 성령의 예와 성령의 예가 많이 있습니다. – Anonymous

+0

필자는 헤더 전용이라고 확신합니다. 어쩌면 내가 죽일 시간이있을 때. – smocking

관련 문제