English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ set lower_bound()Função usada para retornar um iterador que aponta para a chave no contêiner de conjunto, equivalente ao valor passado no parâmetro.
Se não houver val no contêiner de conjunto, ele retornará um iterador que aponta para o próximo elemento maior que val.
iterator lower_bound (const value_type& val); //C++ 11 Antes iterator lower_bound (const value_type& val); //De C++ 11Início const_iterator lower_bound (const value_type& val) const; //De C++ 11Início
val: Valor a ser pesquisado no contêiner de conjunto.
Ele retorna um iterador que aponta para o valor no contêiner de conjunto, equivalente ao valor passado no parâmetro. Se não houver tal elemento, ele retorna end().
Tamanho é logarítmico.
Sem alterações.
O contêiner é acessado (versões const e não const não podem modificar o contêiner).
Acesso simultâneo aos elementos da coleção é seguro.
Se ocorrer uma exceção, não haverá alterações no contêiner.
Vamos ver um exemplo simples, para obter o limite inferior de uma chave dada:
#include<iostream> #include<set> using namespace std; int main(void) { set<char> m = {'a','b','c','d','e'}; auto it = m.lower_bound('c'); cout << "Limite inferior (=) " << *it; return 0; }
Saída:
Limite inferior (=) c
No exemplo acima, o limite inferior é c.
Vamos ver um exemplo simples, para excluir elementos do set de baixo para cima:
#include<iostream> #include<set> using namespace std; int main () { set<int> myset; set<int>::iterator itlow,itup; for (int i=1; i<10; i++myset.insert(i)*10); // 10 20 30 40 50 60 70 80 90 itlow=myset.lower_bound(30); // ^ itup=myset.upper_bound(60); // ^ myset.erase(itlow,itup); // 10 20 70 80 90 std::cout << "myset contém:"; for (set<int>::iterator it=myset.begin(); it!=myset.end(); ++it) cout << " " << *it; cout << "\n"; return 0; }
Saída:
myset contém: 10 20 70 80 90
No exemplo acima, a função delete() remove elementos do conjunto set a partir do limite inferior (=) até ao limite superior (>), e imprime o conteúdo restante.
Vamos ver um exemplo simples:
#include<set> #include<iostream> using namespace std; int main() { using namespace std; set<int> s1; set<int> :: const_iterator s1_AcIter, s1_RcIter; s1.insert( 10 ); s1.insert( 20); s1.insert( 30); s1_RcIter = s1.lower_bound( 20); cout << "conjunto s1a chave é2os elementos de 0 são: " << *s1_RcIter << "." << endl; s1_RcIter = s1.lower_bound( 40); // se não encontrar uma chave correspondente, retorna end() if (s1_RcIter == s1.end()); cout << "conjunto s1nenhum valor de chave4os elementos de 0." << endl; else cout << "conjunto s1e a chave é4os elementos de 0 são: " << *s1_RcIter << "." << endl; //pode encontrar o elemento específico no conjunto //usando iteradores referenciados para localizar a posição s1_AcIter = s1.end()); s1_AcIter--; s1_RcIter = s1.lower_bound( *s1_AcIter); cout << "s1os elementos cujas chaves correspondem à última chave são:" << *s1_RcIter << "." << endl; return 0; }
Saída:
conjunto s1a chave é2os elementos de 0 são: 20. conjunto s1nenhum valor de chave4os elementos de 0. s1os elementos cujas chaves correspondem à última chave são:30.
Vamos ver um exemplo simples:
#include<set> #include<iostream> using namespace std; int main() { set<int> mp; // inserir elementos em ordem aleatória mp.insert( 2 ); mp.insert( 1 ); mp.insert( 5 ); mp.insert( 4 ); cout << "elemento é: \n"; for (auto it = mp.begin(); it != mp.end(); it++) { cout << (*it) << endl; } //quando2existe auto it = mp.lower_bound(2); cout << "chave2o limite inferior é "; cout << (*it) << endl; //quando não existir3quando //apontando3o próximo maior it = mp.lower_bound(3); cout << "chave3o limite inferior é "; cout << (*it) << endl; // quando exceder6 it = mp.lower_bound(6); cout << "chave6o limite inferior é "; cout << (*it); return 0; }
Saída:
o elemento é: 1 2 4 5 chave2o limite inferior é 2 chave3o limite inferior é 4 chave6o limite inferior é 4
No exemplo acima, quando tentamos encontrar o limite inferior de um valor fora do container, ou seja, quando não existe o valor no container set, ele retornará ao end.