Предыдущий пост -
Следующий пост -

std::mismatch.

Рубрика: Алгоритмы, Дата: 4 July, 2013, Автор:
Tags: ,

Находит первые элементы, для которых последовательности отличаются.

Так походу эта фигня возвращает пару элементов для которых последовательности отличаются.

Да и еще предикат не сильно понятный, ну ладно не хочу вникать, я с оф сайта примерно скопировал ту функцию которая там была, в общем то что получилось, то получилось.

#include <iostream>
using std::cout;
using std::endl;
#include <vector>
using std::vector;
#include <algorithm>
using std::mismatch;
#include <utility>
using std::pair;

bool pr(int a, int b)
{
	return (a==b);
}

int main()
{
	int mass[]={1,2,3,44,33,3434};
	vector<int> v(mass,mass+6);

	//последовательность для сравнения
	int mass1[]={1,2,3,343,444,5};

	//создаем пару куда будем сохранять результат
	pair<vector<int>::iterator,int*> rez;
	rez=mismatch(v.begin(),v.end(),mass1);
	cout <<"*rez.first= "<<*rez.first<<" *rez.secodn= "<<*rez.second<<endl;
	//44 343

	//попробуем остальные части вывести
	rez.first++;
	rez=mismatch(rez.first,v.end(),++rez.second);
	cout <<"*rez.first= "<<*rez.first<<" *rez.second= "<<*rez.second<<endl;
	//33 444

	//попробуем с предикатом
	//да не понятный предикат конечно ну фиг с ним
	//да походу мы просто сыметировали тот предикат которые есть, щас попробуе
	//если не равно
	rez=mismatch(rez.first,v.end(),rez.second,pr);
	cout <<"*rez.first= "<<*rez.first<<" *rez.second= "<<*rez.second<<endl;

	return 0;
}

[youtube]http://www.youtube.com/watch?v=ErHjoTtQo0s[/youtube]

rss