>

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;
}

word   vector<std::string> 입니다   std::regex reg 와 일치하는 요소를 계산 해야하는 곳  수업 외부를 우회합니다.

  • 답변 # 1

    std::count_if 의 술어에서 람다를 사용하여이를 수행하는 방법의 예는 다음과 같습니다. :

    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 );
        });
    };
    
    

  • 이전 reporting services - ssrs 보고서에서 카테고리에 지정된 색상의 레이블 설정
  • 다음 vhdl - 부호없는 것과 std_logic_vector의 차이점