English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ set value_comp()A função serve para: retornar um objeto de comparação. Esta função é usada para comparar dois elementos para verificar se a chave do primeiro elemento está antes do segundo elemento. Usado para comparar tamanhos de valor.
Por exemplo:-para a coleção m, se dois elementos e1(k1,d1)e e2(k2,d2)é um objeto do tipo value_type, onde k1e k2é do tipo key_type da chave, e d1e d2é do tipo de dados value_type da data type, então m value_comp (e1,e2)equivalente a m key_comp (k1,k2)。
value_compare value_comp() const;
bool-operator (value_type &left, value_type &right);
se, por ordem de classificação, o valor de left estiver à frente e não for igual ao valor de right, retornatrue。
sem
ele retorna um objeto de função de comparação de valor.
invariável.
sem mudanças.
O contêiner é acessado.
Acesso a elementos sem conteúdo: o acesso simultâneo aos elementos da coleção é seguro.
Se um exceção for lançada, não haverá nenhuma mudança no contêiner.
Vamos ver um exemplo simples de comparação de elementos valores:
#include <iostream> #include <set> using namespace std; int main() { set<int> c; set<int>::value_compare comp = c.value_comp(); cout << "comparar2e5(1é verdadeiro, 0 é falso): " << comp(2, 5) << endl; cout << "comparar8e5(1é verdadeiro, 0 é falso): " << comp(8, 5) << endl; }
Saída:
comparar2e5(1é verdadeiro, 0 é falso): 1 comparar8e5(1é verdadeiro, 0 é falso): 0
No exemplo acima, porque2é menor que5, então comp (2,5)retorna verdadeiro; devido a8não é menor que5,comp (8,5)retorna falso.
Vamos ver um exemplo simples:
#include <iostream> #include <set> using namespace std; int main () { set<int> myset; set<int>::value_compare mycomp = myset.value_comp(); for (int i = 0; i <=5; i++) myset.insert(i); cout << "myset contém:"; int highest =*myset.rbegin(); set<int>::iterator it = myset.begin(); do { cout << ' ' << *it; } while ( mycomp(*(++it, highest); cout << '\n'; return 0; }
Saída:
myset contém: 0 1 2 3 4
No exemplo acima, a variável mais alta armazena o último elemento do conjunto myset e inicializa o iterador com o primeiro elemento do conjunto (em ordem de classificação). Do-O loop while é usado para imprimir os elementos que serão executados no loop até que o primeiro chave seja menor que a última chave (para isso, ele usa a função key_comp() chamada mycomp).
Vamos ver um exemplo simples:
#include <set> #include <iostream> int main( ) { using namespace std; set<int, less<int> > s1; set<int, less<int> >::value_compare vc1 = s1.value_comp( ); bool result1 = vc1( 2, 3 ); if( result1 == true ) { cout << "vc1(2,3) retorna valor true, " << "onde vc1é s1do objeto da função. " << endl; } else { cout << "vc1(2,3) retorna valor false, " << "onde vc1é s1do objeto da função. " << endl; } set<int, greater<int> > s2; set<int, greater<int> >::value_compare vc2 = s2.value_comp( ); bool result2 = vc2( 2, 3 ); if( result2 == true ) { cout << "vc2(2,3) retorna valor true, " << "onde vc2é s2do objeto da função. " << endl; } else { cout << "vc2(2,3) retorna valor false, " << "onde vc2é s2do objeto da função. " << endl; } }
Saída:
vc1(2,3) retorna valor true, onde vc1é s1do objeto da função. vc2(2,3retorna valor false, onde vc2é s2do objeto da função.
Vamos ver um exemplo simples para mostrar a diferença entre key_comp() e value_comp():
#include <set> #include <iostream> #include<map> using namespace std; int main() { set<int> myset; int highest1, highest2; set<int>::key_compare myCompKeyForSet = myset.key_comp(); set<int>::value_compare myCompValForSet = myset.value_comp(); for (int i = 0; i <=5; i++) { myset.insert(i); } o mais alto1=*myset.rbegin(); set<int>::iterator it = myset.begin(); while ( myCompKeyForSet(*it, o mais alto1) ) it++; cout << "\no mais alto1 é " << o mais alto1; // imprime 5 o mais alto2 = *myset.rbegin(); it=myset.begin(); enquanto ( myCompValForSet(*it, o mais alto2) ) it++; cout << "\no mais alto2 é " << o mais alto2; // imprime 5 return 0; }
Saída:
o mais alto1 é 5 o mais alto2 é 5
No exemplo acima, quando comparamos key_comp() e value_comp() para tal contêiner de conjunto, essas duas palavras são idênticas. Para esses tipos de funções, ambas retornarão o mesmo valor.