РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
384 of 815 menu

Функция mismatch

Функция mismatch сравнивает два диапазона элементов и возвращает пару итераторов, указывающих на первое несовпадение элементов. В первый и второй параметры мы передаем итераторы начала первого и второго диапазонов, а в третий - итератор конца второго диапазона. Также можно передать четвертый параметр - предикат, задающий условие сравнения. Если диапазоны полностью совпадают, функция возвращает пару итераторов на концы диапазонов.

Синтаксис

mismatch(first1, last1, first2) mismatch(first1, last1, first2, pred)

Пример

Давайте сравним два вектора и найдем первое несовпадение элементов:

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> v1 = {1, 2, 3, 4, 5}; vector<int> v2 = {1, 2, 9, 4, 5}; auto res = mismatch(v1.begin(), v1.end(), v2.begin()); if (res.first != v1.end()) { cout << "First mismatch at position: "; cout << distance(v1.begin(), res.first) << endl; cout << "Values: " << *res.first; cout << " and " << *res.second << endl; } return 0; }

Результат выполнения кода:

"First mismatch at position: 2" "Values: 3 and 9"

Пример

Давайте сравним два вектора строк, которые полностью совпадают:

#include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; int main() { vector<string> v1 = {"a", "b", "c", "d", "e"}; vector<string> v2 = {"a", "b", "c", "d", "e"}; auto res = mismatch(v1.begin(), v1.end(), v2.begin()); if (res.first == v1.end()) { cout << "Ranges are equal" << endl; } return 0; }

Результат выполнения кода:

"Ranges are equal"

Пример

Давайте сравним два вектора с пользовательским предикатом, который сравнивает элементы по модулю:

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> v1 = {1, 2, 3, 4, 5}; vector<int> v2 = {-1, -2, -3, 9, -5}; auto pred = [](int a, int b) { return a == -b; }; auto res = mismatch(v1.begin(), v1.end(), v2.begin(), pred); if (res.first != v1.end()) { cout << "First mismatch at position: "; cout << distance(v1.begin(), res.first) << endl; cout << "Values: " << *res.first; cout << " and " << *res.second << endl; } return 0; }

Результат выполнения кода:

"First mismatch at position: 3" "Values: 4 and 9"

Смотрите также

  • функция equal,
    которая проверяет равенство двух диапазонов
  • функция find,
    которая ищет элемент в диапазоне
  • функция search,
    которая ищет подпоследовательность в диапазоне
  • функция lexicographical_compare,
    которая сравнивает два диапазона лексикографически
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить