lexicographical_compare() в C++ STL

Опубликовано: 15 Сентября, 2022

C++ STL предлагает множество утилит для решения основных повседневных проблем. Сравнение значений всегда необходимо, но иногда нам также нужно сравнивать строки. Поэтому lexicographical_compare() используется для сравнения строк .

Он обычно используется в словарях для упорядочивания слов в алфавитном порядке; это влечет за собой последовательное сравнение элементов, которые имеют одинаковое положение в обоих диапазонах, до тех пор, пока один элемент не будет равен другому. Лексикографическое сравнение является следствием сравнения этих первых несовпадающих компонентов. Эта функция определена в заголовке <algorithm> .

Он имеет следующие две реализации:

Синтаксис 1:

lexicographical_compare(iter1 beg1, iter1 end1, iter2 beg2, iter2 end2) 

Шаблон:

template 
  bool lexicographical_compare(iter1 beg1, iter1 end1, 
                               iter2 beg2, iter2 end2)
{
  while (beg1!=end1)
  {
    if (beg2==end2 || *beg2<*beg1) return false;
    else if (*beg1<*beg2) return true;
    ++beg1; ++beg2;
  }
  return (beg2!=end2);
}

Параметры:

  • beg1: введите итератор в начальную позицию первой последовательности.
  • end1: введите итератор в конечную позицию первой последовательности.
  • beg2: введите итератор в начальную позицию второй последовательности.
  • end2: введите итератор в конечную позицию второй последовательности.

Возвращаемое значение: возвращает логическое значение true, если range1 строго лексикографически меньше, чем range2, иначе возвращает false.

Пример:

Синтаксис 2:

lexicographical_compare(iter1 beg1, iter1 end1, iter2 beg2, iter2 end2, Compare comp) 

Шаблон:

template 
  bool lexicographical_compare(iter1 beg1, iter1 end1, 
                               iter2 beg2, iter2 end2)
{
  while (beg1!=end1)
  {
    if (beg2==end2 || *beg2<*beg1) return false;
    else if (*beg1<*beg2) return true;
    ++beg1; ++beg2;
  }
  return (beg2!=end2);
}

Параметры:

  • beg1: введите итератор в начальную позицию первой последовательности.
  • end1: введите итератор в конечную позицию первой последовательности.
  • beg2: введите итератор в начальную позицию второй последовательности.
  • end2: введите итератор в конечную позицию второй последовательности.
  • comp: функция сравнения, которая возвращает логическое значение true/false для каждого сравниваемого элемента. Эта функция принимает два аргумента. Это может быть указатель на функцию или объект функции, и он не может изменять значения.

Возвращаемое значение: возвращает логическое значение true, если range1 строго лексикографически меньше, чем range2, иначе возвращает false.

Пример:

Применение: Сравнение строк обычно можно использовать в словаре , где нам нужно разместить слова в лексикографическом порядке. Примером этого может быть поиск слова, которое встречается 1-м в словаре среди заданного набора слов.

Исключение в lexicographical_compare(): генерируется исключение, если выдается либо сравнение элементов, либо операция на итераторе. Если аргументы недействительны, они вызывают неопределенное поведение.

Эта статья предоставлена Манджитом Сингхом . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью write.geeksforgeeks.org или отправить ее по адресу review-team@geeksforgeeks.org. Посмотрите, как ваша статья появится на главной странице GeeksforGeeks, и помогите другим гикам. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.

C++