@kill94

Как сравнивать двух строк типа string?

реализую алгоритм быстрой сортировки строк
есть массив срок string Str[100];
есть переменная string Str2

как можно их сравнивать так, пример сравнения типа int
int s_arr[100];
int x = 8;
        while (s_arr[i] < x) i++;
        while (s_arr[j] > x) j--;
  • Вопрос задан
  • 5727 просмотров
Пригласить эксперта
Ответы на вопрос 3
@MiiNiPaa
std::string arr[] = {"123", "abc", "@$%"};
std::string str = "Hello";
        while (s_arr[i] < x) i++;
        while (s_arr[j] > x) j--;
Ответ написан
Комментировать
Olej
@Olej
инженер, программист, преподаватель
Для class basic_string определён метод compare().
А через него переопределены friend операторы ==, |=, >, <, <=, >=
Все операции могут применяться и к string и к const char* как одному из операндов.
Смысл сравнений - естественный лексографический порядок, который вы поменять (легко) не можете.
Ответ написан
Комментировать
@goldstar2154
Как правило для всех классов, реализующих работу со строками (CString, std::string, QString), уже доступны перегруженные операторы сравнения <, >, == и т.д. Так же могут существовать методы сравнения с условиями, вроде CompareNoCase.
Если вы реализуете алгоритм быстрой сортировки и хотите реализовать собственные методы сравнения строк, то самым простым вариантом будет пронаследоваться от класса строк и переопределять методы сравнения.
Если вы работаете с char* то посмотрите реализацию memmcmp и strcmp
www.cplusplus.com/reference/cstring/memcmp
www.cplusplus.com/reference/cstring/strcmp
P.S. совет, не изобретайте велосипед, т.к. алгоритмы сортировки оттачивались математиками и программистами много лет. Выигрыш по быстродействию вы сможете ощутить только, если у вас очень специфичные наборы строк.
Например у всех строк первые три символа одинаковы, тогда кастомная сортировка с 4-го символа может дать выигрыш по времени.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы