freeCodeCamp/guide/portuguese/cplusplus/set/index.md

94 lines
3.4 KiB
Markdown

---
title: Set
localeTitle: Conjunto
---
Uma estrutura de dados definida em c ++ é definida da mesma forma que um conjunto é definido no contexto da matemática.
Mais formalmente falando, os Conjuntos são um tipo de contêineres associativos nos quais cada elemento tem que ser único.
* O valor do elemento não pode ser modificado depois que ele é inserido, embora a exclusão de um elemento e a inserção de um novo elemento seja permitida, da mesma forma que fazemos em matemática.
* Definir estrutura de dados pode ser usado para modelar, bem, se define. Fica fácil achar interseções, uniões etc.
* Semelhante ao vetor, mas somente valores exclusivos são permitidos.
* Set organiza os elementos em ordem crescente como e quando você insere elementos no conjunto.
O arquivo de cabeçalho necessário para usar a estrutura de dados definida é 'set'. ou seja, `#include<set>` deve estar lá em seu código para você usar a estrutura de dados definida.
**Dica profissional** : - Use `#include<bits/stdc++.h>` para incluir todas as estruturas e funções de dados do C ++, em vez de adicioná-las uma a uma.
Algumas das funções que podem ser executadas com um conjunto: -
1. begin () - Retorna um iterador para o primeiro elemento no conjunto
2. end () - Retorna um iterador ao elemento teórico que segue o último elemento no conjunto
3. size () - Retorna o número de elementos no conjunto
4. max\_size () - Retorna o número máximo de elementos que o conjunto pode conter
5. empty () - Retorna se o conjunto está vazio
6. erase (const g) - Remove o valor 'g' do conjunto
7. clear () - Remove todos os elementos do conjunto
Vamos ver um exemplo :-
```cpp
#include <iostream>
#include <set>
#include <iterator>
using namespace std;
int main()
{
set <int> myset; //an empty set container. Note that size of the set need not be declared, similar to vector.
// insert elements in random order
myset.insert(65);
myset.insert(30);
myset.insert(80);
myset.insert(20);
myset.insert(9);
myset.insert(9); // only one 9 will be added to the list.
// printing set myset
set <int> :: iterator itr; //an iterator is like a pointer.
cout << "\nThe contents of myset : ";
for (itr = myset.begin(); itr != myset.end(); ++itr)
{
cout << '\t' << *itr;
}
cout << endl;
// remove all elements up to 65 in myset from the beginning:-
cout << "\nContents of myset after removal of elements less than 30 : ";
myset.erase(myset.begin(), myset.find(30));
for (itr = myset.begin(); itr != myset.end(); ++itr)
{
cout << '\t' << *itr;
}
// remove element with value 50 in myset
int num = myset.erase(80); //returns true (and deletes) if 80 is there in the list else returns 0.
cout<<"\n\n After doing myset.erase(80), "<<num<<" element is removed\n\n";
cout<<"Contents of the modified set:\t";
for (itr = myset.begin(); itr != myset.end(); ++itr)
{
cout << '\t' << *itr;
}
cout << endl;
return 0;
}
```
\`\` \`cpp Saída:- O conteúdo do myset: 9 20 30 65 80
Conteúdo do myset após a remoção de elementos inferiores a 30: 30 65 80
Depois de fazer myset.erase (80), 1 elemento é removido
Conteúdo do conjunto modificado: 30 65 \`\` \`
\### Fontes
1. [Geeks para Geeks](https://www.geeksforgeeks.org/set-in-cpp-stl/)