regex_match作为谓词

时间:2017-06-15 04:57:06

标签: c++ regex c++11 predicate

我尝试在std::regex_match()中使用std::count_if()作为谓词,并在类成员函数中使用std::vector<string>元素。但是我不知道如何正确地绕过第二个参数(正则表达式值)到函数中。

有没有办法使用std::regex_match()作为谓词(例如std::bind1st())?

示例:

int GetWeight::countWeight( std::regex reg )
{
    std::cout << std::count_if( word.begin(), word.end(), 
                                std::bind1st( std::regex_match(), reg ) );
    return 1;
}

wordvector<std::string>,我需要计算匹配std::regex reg的元素绕过课外。

1 个答案:

答案 0 :(得分:2)

以下是如何使用std::count_if谓词中的lambda来执行此操作的示例:

using Word = std::string;
using WordList = std::vector< Word >;

int countWeight( const WordList& list, const std::regex& re )
{
    return std::count_if( list.cbegin(), list.cend(), [&re]( const Word& word )
    {
        std::smatch matches;
        return std::regex_match( word, matches, re );
    });
};