보다 간결하고 읽기 쉬운 람다 코딩 스타일을 선호하는 분들을 위해 ...
이 예에서는 넓은 문자열에서 영숫자가 아닌 모든 공백 문자를 제거합니다. 복잡한 모양의 문자 기반 테스트를 제거하기 위해 다른 ctype.h 도우미 함수 와 혼합 할 수 있습니다 .
(이 함수가 CJK 언어를 어떻게 처리할지 잘 모르겠으므로 부드럽게 걸어가십시오.)
// Boring C loops: 'for(int i=0;i<str.size();i++)'
// Boring C++ eqivalent: 'for(iterator iter=c.begin; iter != c.end; ++iter)'
시끄러운 C / C ++ for / iterator 루프보다 이해하기가 더 쉽지 않은지 확인하십시오.
TSTRING label = _T("1. Replen & Move RPMV");
TSTRING newLabel = label;
set<TCHAR> badChars; // Use ispunct, isalpha, isdigit, et.al. (lambda version, with capture list parameter(s) example; handiest thing since sliced bread)
for_each(label.begin(), label.end(), [&badChars](TCHAR n){
if (!isalpha(n) && !isdigit(n))
badChars.insert(n);
});
for_each(badChars.begin(), badChars.end(), [&newLabel](TCHAR n){
newLabel.erase(std::remove(newLabel.begin(), newLabel.end(), n), newLabel.end());
});
이 코드를 실행 한 후 newLabel 결과 : " 1ReplenMoveRPMV "
분명히 lambda0 (첫번째에서 '만약'논리를 결합하는 것이 더 정확 간결하고 효율적 것이기 때문에, 단지 학문적 인 의 for_each 단일 lambda1 (둘째로) 의 for_each 이미 설정 한 경우 "badChars는"있는 자) .