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

Utilizzo e esempio di swap() di C++ set

STL Set(集合)C++

C++ swap()La funzione utilizzata per scambiare (o sostituire) i contenuti di due set, ma entrambi i setTipoDeveUgualeNonostante le dimensioni possano essere diverse.

Sintassi

void swap(set& x);

Parametro

x:Il contenitore con cui scambiare il contenuto.

Valore di ritorno

Nessuno

Complesso

Immutabile.

Validità degli iteratori

Tutte le referenze agli elementi delle due contenitori di set, iteratori e puntatori rimangono validi, ma ora si fa riferimento agli elementi di un altro contenitore di set e si itera su di essi.

Conflitto dei dati

Il contenitore e x vengono modificati.

Sicurezza delle eccezioni

Se viene lanciata un'eccezione, non ha alcun impatto sul contenitore.

Esempio 1

Vediamo un esempio semplice per scambiare un gruppo di elementi con un altro gruppo:

#include \u003Ciostream\u003E
#include \u003Cset\u003E
using namespace std;
int main(void) {
   set<int> m1 = {1,2,3,4,5};
   set<int> m2;
   m2.swap(m1);
   cout << "La集合 contiene i seguenti elementi" << endl;
   for (auto it = m2.begin(); it != m2.end(); ++it)
      cout << *it << endl;
   return 0;
}

输出:

La集合 contiene i seguenti elementi
1
2
3
4
5

Nell'esempio sopra, la集合 m1 ha cinque elementi mentre m2 è vuota. Quando si scambia m1 con m2, tutti gli elementi di m1 vengono scambiati con m2.

Esempio 2

Vediamo un esempio semplice per scambiare i contenuti di due gruppi:

#include \u003Ciostream\u003E
#include \u003Cset\u003E
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 << "La prima集合包含:";
   per (set<int>::iterator it = first.begin(); it!=first.end(); ++it)
      cout << ' ' << *it;
   cout << '\n';
   cout << "La seconda集合 contiene:\"
   for (set<int>::iterator it = second.begin(); it!=second.end(); ++it)
      cout << ' ' << *it;
   cout << '\n';
   return 0;
}

输出:

La prima集合 contiene: 40 50 60
La seconda集合 contiene: 10 20 30

Esempio 3

Vediamo un esempio semplice per scambiare i contenuti di due insiemi:

#include<iostream>
#include<set>
using namespace std;
 
int main()
{
    // Prendi due insiemi casuali
    set<char> set1, set2;
    
    set1 = {'a','b','c','d'}; 
    set2 = {'x','y','z'};
 
    // Scambia gli elementi dell'insieme
    swap(set1, set2);
 
    // Stampa gli elementi dell'insieme
    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;
}

输出:

set1:
	x
	y
	z
set2:
	a
	b
	c
	d

Nell'esempio sopra, una forma diversa di funzione swap() viene utilizzata per scambiare i contenuti di due insiemi.

Esempio 4

Vediamo un esempio semplice:

#include \u003Cset\u003E  
#include \u003Ciostream\u003E  
  
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 << "L'insieme originale s1 è:\  
   for ( s1_Iter = s1.begin( ); s1_Iter != s1.end( ); s1_Iter++ )  
      cout <<  " " << *s1_Iter;  
   cout  <<  "."  << endl;  
  
   // Questa è la versione del membro swap
   s1.swap(s2);  
  
   cout << "Dopo lo scambio con s2, l'elenco s1 diventa:\  
   for ( s1_Iter = s1.begin( ); s1_Iter != s1.end( ); s1_Iter++ )  
      cout <<  " " << *s1_Iter;  
   cout << "\u0002" << endl;  
  
   // 这是swap的专用模板版本
   swap( s1, s3 );  
  
   cout <<  "在与s3交换之后,列表s1是:";  
   for ( s1_Iter = s1.begin( ); s1_Iter != s1.end( ); s1_Iter++ )  
      cout <<  " " << *s1_Iter;  
   cout  <<  "."  << endl;  
}

输出:

集合原始s1是: 10 20 30.
交换后,列表s1为: 100 200.
在交换s3之后,列表s1是: 300.

STL Set(集合)C++