English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ set key_comp()La funzione viene utilizzata per restituire una copia dell'oggetto di confronto, che viene utilizzato dal contenitore set per confrontare le chiavi.
L'oggetto di confronto può essere utilizzato per confrontare i valori delle chiavi di due elementi all'interno del contenitore. Questo oggetto di confronto è fornito al momento della costruzione dell'oggetto, può essere un puntatore a una funzione o un oggetto di funzione. In entrambi i casi, accetta due parametri dello stesso tipo, se il primo parametro precede il secondo parametro, restituisce true, altrimenti restituisce false.
Key_compare key_comp() const;
operator bool (const Key & _Left, const Key & _Right);
Restituisce true se _Left è in posizione anteriore e l'ordine di ordinamento non è uguale a _Right.
Nessuno
Restituisce l'oggetto della funzione di confronto delle chiavi.
Immutabile.
Nessuna modifica.
Il contenitore viene acceduto.
Non è possibile accedere a qualsiasi elemento contenuto: è sicuro accedere e modificare contemporaneamente gli elementi.
Se viene sollevata un'eccezione, non ci sono modifiche nel contenitore.
Ecco un esempio semplice di confronto delle chiavi di valore:
#include <iostream> #include <set> using namespace std; int main () { set<int> m; set<int>::key_compare comp = m.key_comp(); cout << "Confronto delle chiavi (1 è vero, 0 è falso): " << comp(1, 5) << endl; cout << "Confronto delle chiavi (1 è vero, 0 è falso): " << comp(3, 2) << endl; }
Output:
Confronto delle chiavi (1 è vero, 0 è falso): 1 Confronto delle chiavi (1 è vero, 0 è falso): 0
Nell'esempio precedente, comp(1, 5) restituisce true perché 1 è minore di 5. comp(3, 2) restituisce false perché 3 è maggiore di 2.
Guardiamo un esempio semplice:
#include <iostream> #include <set> using namespace std; int main () { set<int> myset; int highest; set<int>::key_compare mycomp = myset.key_comp(); for (int i = 0; i <= 5; i++) myset.insert(i); cout << "myset contiene:"; highest = *myset.rbegin(); set<int>::iterator it = myset.begin(); do { cout << ' ' << *it; }; while (mycomp(*(++it), highest)); std::cout << '\n'; return 0; }
Output:
myset contiene: 0 1 2 3 4
Nell'esempio precedente, la variabile più alta memorizza l'ultimo elemento della集合 myset e inizializza l'iteratore utilizzando il primo elemento della集合 (in ordine di sortita). Il ciclo do-while viene utilizzato per stampare gli elementi che eseguiranno il ciclo fino a quando il primo chiave è minore della chiave più alta (per questo, utilizza la funzione key_comp chiamata mycomp).
Guardiamo un esempio semplice:
#include <set> #include <iostream> int main( ) { using namespace std; set<int, less<int>> s1; set<int, less<int>>::key_compare kc1 = s1.key_comp(); bool result1 = kc1( 2, 3 ); if( result1 == true ) { cout << "kc1(2,3) restituisce il valore true" << "Dove kc1 è l'oggetto funzionale di s1."; << endl; } else { cout << "kc1(2,3) restituisce il valore false "; << "Dove kc1 è l'oggetto funzionale di s1."; << endl; } set<int, greater<int>> s2; set<int, greater<int>>::key_compare kc2 = s2.key_comp(); bool result2 = kc2( 2, 3 ); if(result2 == true) { cout << "kc2(2,3) restituisce il valore true, "; << "Dove kc2 è l'oggetto funzionale di s2."; << endl; } else { cout << "kc2(2,3) restituisce il valore false, "; << "Dove kc2 è l'oggetto funzionale di s2."; << endl; } }
Output:
kc1(2,3) restituisce il valore true, dove kc1 è l'oggetto funzionale di s1. kc2(2,3) restituisce il valore false, dove kc2 è l'oggetto funzionale di s2.
Nell'esempio sopra, sono stati utilizzati due insiemi, ovvero m1 e m2. L'oggetto di confronto delle chiavi di m1 è più piccolo rispetto a quello di m2. Pertanto, quando confrontiamo (2,3), l'oggetto funzionale kc1 di m1 restituisce true, mentre l'oggetto funzionale kc2 di m2 restituisce false.
Guardiamo un esempio semplice:
#include <set> #include <iostream> #include <string> using namespace std; typedef set<int> setObj; int main(){ // Costruttore predefinito setObj c1; setObj::key_compare kc = c1.key_comp(); cout << "Utilizzare l'oggetto funzionale kc per confrontare (10,4)..." << endl ; if (kc(10, 4) == true) cout << "kc(10, 4) == true, il che significa 10 < 4" << endl; else cout << "kc(10,4) == false, il che significa 10 > 4" << endl; return 0; }
Output:
Utilizzare il funzione oggetto kc per cercare confronto(10,4)... kc(10,4) == false, il che significa 10 > 4
Nell'esempio sopra, il funzione oggetto kc di set setobj viene chiamata compare(10, 4), se è true, restituisce 10 < 4; se non è true, restituisce 10 > 4.