2013-03-06 6 views
0

람다 식을 잘 이해하지 못합니다. "brute"구조체를 사용하는 목록을 만들었습니다.C++ 람다 식 사용

typedef struct brute{ 
int entry; 
string secWord; 
string secHex; 
}decrypt; 

typedef list<brute*>Unsolved; 

그런 다음 for_each를 사용하여 목록을 반복합니다.

char combo[] = {'a','a','b','c'); 
std::for_each(unsolved.begin(), unsolved.end(),[&combo](int i) 
{ 

}); 

[& 콤보]는 내가 캡처하려고하는 것입니다. 3 가지 질문이 있습니다. "int i"가 목록의 반복자입니까? 내 미해결 목록에있는 회원에게 어떻게 접근합니까? 마지막으로 반환 값은 char []이어야한다고 정의 할 필요가 있습니까?

답변

3

std::for_eachbrute* 또는 brute*&,

T foo(brute*); 

할 것 형태의 무언가를 취하는 단항 술어를 기대합니다. 반환 값을 무시합니다. 그것은 일반 배열보다 간단 복사/할당 의미를 가지고 있기 때문에 내가 std::array 사용했다

std::array<char, 4> combo{'a','a','b','c'}; 
std::for_each(unsolved.begin(), unsolved.end(),[&combo](brute*& b) { .... }); 

: 그래서 람다를 사용하여 for_each 호출은이 양식을 가질 수 있습니다. 그래서

, 질문에 대답하기 위해,

있는 목록에 대한 반복자 "난을 int로?"

없음

은 어떻게 미해결 목록 안에 멤버를 액세스합니까?

가 마지막 내 리턴 값이 숯불 []되어야한다고 정의해야 할 실시 예에서 나타내는 바와 같이

?

반환 값이 무시됩니다. 필요한 경우 다른 알고리즘이 필요합니다.

+0

정말 고마워요. 이것은 나에게 많은 도움이되었다. – user1665569