std::lexicographical_compare
![]() | Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate. La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui. |
Elemento definito nell'header <algorithm> | ||
template<class InputIt1, class InputIt2 > bool lexicographical_compare( InputIt1 first1, InputIt1 last1, | (1) | |
template<class InputIt1, class InputIt2, class Compare > bool lexicographical_compare( InputIt1 first1, InputIt1 last1, | (2) | |
comp
.comp
.You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- Due campi sono confrontati elemento per elemento.Original:Two ranges are compared element by element.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - L'elemento mismatching prima definisce quale intervallo è lexicographically meno o' superiore rispetto agli altri.Original:The first mismatching element defines which range is lexicographically less or greater than the other.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Se un intervallo è un prefisso di un altro, la gamma più breve è lexicographically' di meno rispetto agli altri.Original:If one range is a prefix of another, the shorter range is lexicographically less than the other.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Se due serie hanno elementi equivalenti e sono della stessa lunghezza, gli intervalli sono uguali lessicograficamente'.Original:If two ranges have equivalent elements and are of the same length, then the ranges are lexicographically equal.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Un campo a vuoto è lexicographically' meno di qualsiasi non vuota gamma.Original:An empty range is lexicographically less than any non-empty range.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Due campi sono vuoti lessicografico' uguali.Original:Two empty ranges are lexicographically equal.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Indice |
[modifica]Parametri
first1, last1 | - | la prima gamma di elementi da esaminare Original: the first range of elements to examine The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
first2, last2 | - | il secondo intervallo di elementi da esaminare Original: the second range of elements to examine The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
comp | - | comparison function which returns true if the first argument is less than the second. The signature of the comparison function should be equivalent to the following: bool cmp(const Type1 &a, const Type2 &b); The signature does not need to have const&, but the function must not modify the objects passed to it. |
Type requirements | ||
-InputIt1, InputIt2 must meet the requirements of InputIterator . |
[modifica]Valore di ritorno
You can help to correct and verify the translation. Click here for instructions.
[modifica]Complessità
You can help to correct and verify the translation. Click here for instructions.
[modifica]Possibile implementazione
First version |
---|
template<class InputIt1, class InputIt2>bool lexicographical_compare(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2){for(;(first1 != last1)&&(first2 != last2); first1++, first2++){if(*first1 <*first2)returntrue;if(*first2 <*first1)returnfalse;}return(first1 == last1)&&(first2 != last2);} |
Second version |
template<class InputIt1, class InputIt2, class Compare>bool lexicographical_compare(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2, Compare comp){for(;(first1 != last1)&&(first2 != last2); first1++, first2++){if(comp(*first1, *first2))returntrue;if(comp(*first2, *first1))returnfalse;}return(first1 == last1)&&(first2 != last2);} |
[modifica]Esempio
#include <algorithm>#include <iostream>#include <vector>#include <cstdlib>#include <ctime> int main(){std::vector<char> v1 {'a', 'b', 'c', 'd'};std::vector<char> v2 {'a', 'b', 'c', 'd'}; std::srand(std::time(0));while(!std::lexicographical_compare(v1.begin(), v1.end(), v2.begin(), v2.end())){for(auto c : v1)std::cout<< c <<' ';std::cout<<">= ";for(auto c : v2)std::cout<< c <<' ';std::cout<<'\n'; std::random_shuffle(v1.begin(), v1.end());std::random_shuffle(v2.begin(), v2.end());} for(auto c : v1)std::cout<< c <<' ';std::cout<<"< ";for(auto c : v2)std::cout<< c <<' ';std::cout<<'\n';}
Possible output:
a b c d >= a b c d d a b c >= c b d a b d a c >= a d c b a c d b < c d a b