如何优化此find_if代码?

Kur*_*oro 4 c++

我有功能检查一个字符串是否只包含字母数字和下划线字符...

inline bool IsValidChar(char x) 
{ 
    return (isalnum(x) || (x == '_')); 
} 
Run Code Online (Sandbox Code Playgroud)

我的find_if代码是:

if(find_if(str.begin(), str.end(), IsValidChar) != str.end()) 
{ 
    ... 
} 
Run Code Online (Sandbox Code Playgroud)

我只想删除IsValidChar函数并直接将其内容放在find_if代码行中.

Fré*_*idi 8

你基本上在寻找C++ 0x lambda表达式:

if (find_if(str.begin(), str.end(),
    [](char x) { return (isalnum(x) || x == '_'); })
    != str.end()) {
    // Do something.
} 
Run Code Online (Sandbox Code Playgroud)