воскресенье, 30 апреля 2017 г.

С++: Fastest check all digits in std::string

По мотивам вот этой переписки самое быстрое из известных решение (С++11, никаких итераторов и других извращений):

 /* Fast check if string contains only digits */  
 static bool DigitsOnly(const std::string &p_str) {  
      for (size_t i = 0, v_len = p_str.length(); i < v_len; ++i) {  
            if ((p_str[i] ^ '0') > 9)  
                return false;  
      }  
      return true;  
 }  
   

Можете проделать бенчмарк, если есть сомнения.