English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Uso e exemplo do set swap()

C++ STL Set (conjunto)

C ++ swap()A função é usada para trocar (ou substituir) o conteúdo de dois conjuntos, mas os conjuntosTipoDeveIgualEmbora o tamanho possa ser diferente.

Sintaxe

void swap (set& x);

Parâmetros

x:O contêiner que contém o conteúdo trocado.

Retorno

Nenhum

Complexo

Invariável.

Validade do iterador

Todas as referências, iteradores e ponteiros que referem elementos de dois conjuntos de contêineres permanecem válidos, mas agora referem-se a elementos de outro contêiner de conjunto e iteram neles.

Concorrência de dados

O contêiner e x são modificados.

Segurança de exceção

Se uma exceção for lançada, não há efeito no contêiner.

Exemplo1

Vamos ver um exemplo simples, onde um conjunto de elementos é trocado por outro conjunto:

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   set<int> m1 ={1,2,3,4,5};
   set<int> m2;
   m2.swap(m1);
   cout << "O conjunto contém os seguintes elementos" << endl;
   for (auto it = m2.begin(); it != m2.end(); ++it)
      cout << *it << endl;
   return 0;
}

Saída:

Contém os seguintes elementos
1
2
3
4
5

No exemplo acima, o conjunto m1com cinco elementos, enquanto m2Vazio. Quando você coloca m1será trocado por m2ao mesmo tempo, m1Todos os elementos serão trocados por m2.

Exemplo2

Vamos ver um exemplo simples para trocar dois conjuntos de conteúdo:

#include <iostream>
#include <set>
using namespace std;
 int main () {
   int myints[] = {10,20,30,40,50,60};
   set<int> first (myints, myints+3);
   set<int> second (myints+3, myints+6);  
   first.swap(second);
   cout << "O primeiro conjunto contém:";
   for (set<int>::iterator it = first.begin(); it!=first.end(); ++it)
      cout << ' ' << *it;
   cout << '\n';
   cout << "O segundo conjunto contém:";
   for (set<int>::iterator it = second.begin(); it!=second.end(); ++it)
      cout << ' ' << *it;
   cout << '\n';
   return 0;
}

Saída:

O primeiro conjunto contém: 40 50 60
O segundo conjunto contém: 10 20 30

Exemplo3

Vamos ver um exemplo simples para trocar o conteúdo de dois conjuntos:

#include<iostream>
#include<set>
using namespace std;
 
int main()
{
    // Tomar dois conjuntos aleatórios
    set<char> set1, set2;
    
    set1 = {'a','b','c','d'}; 
    set2 = {'x','y','z'};
 
    // Trocar os elementos do conjunto
    swap(set1, set2);
 
    // Imprimir os elementos do conjunto
    cout << "set1:\n";
    for (auto it = set1.begin(); it != set1.end(); it++)
        cout << '\t' << *it << '\n';
 
    cout << "set2:\n";
    for (auto it = set2.begin(); it != set2.end(); it++)
        cout << '\t' << *it << '\n';
 
    return 0;
}

Saída:

set1:
	x
	y
	z
set2:
	a
	b
	c
	d

No exemplo acima, outra forma da função swap() é usada para trocar o conteúdo de dois conjuntos.

Exemplo4

Vamos ver um exemplo simples:

#include <set>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   set<int> s1, s2, s3;  
   set<int>::iterator s1_Iter;  
  
   s1.insert( 10 );  
   s1.insert( 20 );  
   s1.insert( 30 );  
   s2.insert( 100 );  
   s2.insert( 200 );  
   s3.insert( 300 );  
  
   cout << "conjunto original s1é:";  
   for ( s1_Iter = s1.begin( ); s1_Iter != s1.end( ); s1_Iter++ )  
      cout << " " << *s1_Iter;  
   cout << "." << endl;  
  
   // Esta é a versão membro da função swap
   s1.swap( s2 );  
  
   cout << "com s2Após a troca, a lista s1para:";  
   for ( s1_Iter = s1.begin( ); s1_Iter != s1.end( ); s1_Iter++ )  
      cout << " " << *s1_Iter;  
   cout << "." << endl;  
  
   // Esta é a versão específica do modelo swap
   swap( s1, s3 );  
  
   cout << "com s3Após a troca, a lista s1é:";  
   for ( s1_Iter = s1.begin( ); s1_Iter != s1.end( ); s1_Iter++ )  
      cout << " " << *s1_Iter;  
   cout << "." << endl;  
}

Saída:

Conjunto Original s1É: 10 20 30.
com s2Após a troca, a lista s1é: 100 200.
com s3Após a troca, a lista s1É: 300.

C++ STL Set (conjunto)