У меня есть функция для сравнения строк без учета регистра, которая использует std::lexicographical_compare
с пользовательским компаратором.
Однако я хотел бы иметь возможность сравнивать strings
, string_views
и const char*
между каждымдругие, для максимального удобства и эффективности.
Итак, я подумал: а что, если я сделаю шаблон, std::string
имеет begin
/ end
, std::string_view
имеет begin
/ end
,... но const char*
нет, даже в форме функции, не являющейся членом.
Так что можно определить собственные begin
/ end
перегрузки, подобные этой
namespace std {
const char * begin(const char* str) { return str; }
const char * end(const char* str) { return str + strlen(str); }
}
чтобы я мог сравнить все со всем на
std::lexicographical_compare(std::begin(a), std::end(a), std::begin(b), std::end(b), icomp );
?
Если нет, то как еще я могу решить мою проблему?