przejście do zawartości
zpr c++ quick reference
Narzędzia użytkownika
Zarejestruj się!
Zaloguj
Narzędzia witryny
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
Zarejestruj się!
Ostatnie zmiany
Menadżer multimediów
Indeks
Ślad:
mismatch
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Algorytm mismatch ====== Algorytm mismatch() porównuje dwie sekwencje w celu znalezienia pierwszego niepasującego elementu. Algorytm ten umożliwia korzystanie z operatora == albo z dwuargumentowego predyktu. Zaliczany jest do algorytmów niemodyfikujących. ===== Nagłówek dla algorytmu ===== <code cpp> #include <algorithm> </code> ===== Opis algorytmu ===== **__Definicja algorytmu__** <code cpp> template <class IteratorWejsciowy1, class IteratorWejsciowy2> pair<IteratorWejsciwoy1, IteratorWejsciowy2> mismatch(IteratorWejsciowy1 pierwszy1, IteratorWejsciowy2 ostatni1, IteratorWejsciowy2 pierwszy2); template <class IteratorWejsciowy1, class IteratorWejsciowy2, class PredykatDwuargumentowy> pair<IteratorWejsciwoy1, IteratorWejsciowy2> mismatch(IteratorWejsciowy1 pierwszy1, IteratorWejsciowy2 ostatni1, IteratorWejsciowy2 pierwszy2, PredykatDwuargumentowy pred_dwuargumentowy); </code> **__Parametry algorytmu__** * **pierwszy1, ostatni1** - iteratory wskazujące na zakres danych wejściowych pierwszych. Przetwarzaniu podlegają elementy z zakresu [pierwszy1, ostatni1), co oznacza, że element wskazywany przez last1 nie zostanie przetworzony * **pierwszy2** - iterator wskazujący na pozycje danych wejściowych drugich. Koniec tego zakresu jest wyliczany na podstawie długości zakresu [pierwszy1, ostatni1). Należy pamiętać aby za elementem peirwszy2 istniało jeszcze co najmniej tyle elementów, ile jest pomiędzy pierwszy1 i ostatni1 * **ped_dwuargumentowy** - predykat do spełnienia __ **Przykład użycia algorytmu mismatch bez predykatu.**__ <code cpp> vector <int> wektor1; list <int> lista1; for(int i=0; i<7 ; i++) wektor1.push_back(i); //wektor1 [0,1,2, 3,4,5,6] for(int i=0; i<8; i++){ //lista1 [0,1,2,982,4,5,6,7] if(i==4) lista1.push_back(982); else lista1.push_back(i); } pair<vector<int>::iterator, list<int>::iterator> para_WektorLista; para_WektorLista = mismatch(wektor1.begin(), wektor1.end(), lista1.begin()); //znajduje pary niezgodne cout<<"Niezgodna para dla wektora1 i listy1: ( "<<*para_WektorLista.first<<", "<<*para_WektorLista.second<<")"<<endl; //Niezgodna para dla wektora1 i listy1: (3,982) </code> __**Przykład użycia algorytmu mismatch z predykatem.**__ <code cpp> class rowne_parzyste{ public: bool operator ()(int ciag1, int ciag2){ //pierwszy predytkt //czy obie wartości są rowne i parzyste return ( ciag1 == ciag2 || ciag1%2 ==0) ? true : false; } }; bool nierowne_nieparzyste(int ciag1, int ciag2){ //drugi predykt return ( ciag1 != ciag2 || (ciag1%2==1 && ciag2%2==1)) ? true : false; } int main(){ int tablica1[] = {1,2,3,4,67,6,7,8,9,10}; int tablica2[] = {1,2,3,4, 5,6,7,8,9,10,11,12}; int rozmiar_tablicy1= sizeof(tablica1)/sizeof(int); int rozmiar_tablicy2= sizeof(tablica2)/sizeof(int); pair<int*,int*> para_tablica; pair<int*,int*> para_tablica; //zastsowanie mismatch z pierwszym predyktem para_tablica = mismatch(tablica1, tablica1+rozmiar_tablicy1, tablica2, rowne_parzyste()); //znajduje pary, ktore nie spelniaja predyktu cout<<"Nierowna i nieparzysta para dla tablicy1 i tablicy2: ( "<<*para_tablica.first<<", "<<*para_tablica.second<<")"<<endl; //Nierowna i nieparzysta para dla tablicy1 i tablicy2: (67,5) //zastosowanie mismatch z drugi predyktem para_tablica = mismatch(tablica1, tablica1+rozmiar_tablicy1, tablica2, nierowne_nieparzyste); //znajduje pary, ktore nie spelniaja predyktu cout<<"Rowna i parzysta para dla tablicy1 i tablicy2: ( "<<*para_tablica.first<<", "<<*para_tablica.second<<")"<<endl; //Rowna i parzysta para dla tablicy1 i tablicy2: (2,2) return 0; } </code> ===== Przykład programu wykorzystujący algorytm mismatch ===== {{:mismatch.cpp|}} //[[mkrotewicz@gmail.com|Michał Krotewicz 6SST]]//
mismatch.1238268680.txt.gz
· ostatnio zmienione: 2009/03/28 20:31 przez
mkrotewicz
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Do góry