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

Manuale di riferimento C++

Set (insieme) STL C++

C++ std swap() metodo di utilizzo e esempio C++ stdswap(set)è in C++setdelFunzione non membro

。Questo viene utilizzato per scambiare (o sostituire) il contenuto di due insiemi (cioè x e y), ma i tipi degli insiemi devono essere gli stessi, mentre la dimensione degli insiemi può essere diversa.

Sintassi
  template <class T, class Compare, class Alloc>

void swap (set<T,Compare,Alloc>& x, set<T,Compare,Alloc>& y);

Parametro:oggetto della prima set.

y:secondo oggetto dello stesso tipo.

Valore di ritorno

Nessuno

Complesso

Immutabile

Validità degli iteratori

Tutti gli iteratori che si riferiscono agli elementi di due contenitori, riferimenti e puntatori, rimangono validi.

Si prega di notare che l'iteratore di fine non si riferisce a un elemento e potrebbe essere non valido.

Conflitto dei dati

I contenitori x e y vengono modificati.

La chiamata non contiene alcun elemento contenuto.

Sicurezza delle eccezioni

Questa funzione non lancia eccezioni.

esempio1

Vediamo un esempio semplice, scambiare un insieme di elementi con un altro insieme:

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   set<char> m1 = {'a','b','c','d'};
   set<char> m2;
   swap(m1, m2);
   cout << "L'insieme contiene i seguenti elementi" << endl;
   for (auto it = m2.begin(); it != m2.end(); ++it)
      cout << *it<< endl;
   return 0;
}

Output:

L'insieme contiene i seguenti elementi
a
b
c
d

Nell'esempio sopra, l'insieme m1 ha cinque elementi, mentre m2 è vuoto. Quando si scambia m1 con m2, tutti gli elementi di m1 vengono scambiati con m2.

esempio2

Vediamo un esempio semplice per scambiare il contenuto di due insiemi:

#include <iostream>
#include <set>
using namespace std;
int main ()
{
  set<int> set1,set2;
  set1= {100,200};
  set2 = {110, 220, 330};
  swap(set1,set2);
  cout << "set1 包含:\n";
  for (set<int>::iterator it=set1.begin(); it!=set1.end(); ++it)
    cout << *it<< '\n';
  cout << "set2 包含:\n";
  for (set<int>::iterator it=set2.begin(); it!=set2.end(); ++it)
    cout << *it<< '\n';
  return 0;
}

Output:

set1 包含:
110
220
330
set2 contiene:
100
200

Nell'esempio sopra, il contenuto di due insiemi (ovvero set1 e set2) vengono scambiati.

Esempio 3

Vediamo un esempio semplice per scambiare il contenuto di due insiemi:

#include <iostream>
#include <set>
using namespace std;
 int main ()
{
  int myints[]={12,75,10,32,20,25};
  set<int> first (myints,myints+3); // 10,12,75
  set<int> second (myints+3,myints+6); // 20,25,32
  swap(first,second);
  cout << "first contiene:";
  for (set<int>::iterator it=first.begin(); it!=first.end(); ++it)
    cout << ' ' << *it;
  cout << '\n';
  cout << "second contiene:";
  for (set<int>::iterator it=second.begin(); it!=second.end(); ++it)
    cout << ' ' << *it;
  cout << '\n';
  return 0;
}

Output:

first contiene: 20 25 32
second contiene: 10 12 75

Esempio 4

Vediamo un esempio semplice:

#include <iostream>
#include <string>
#include <set>
using namespace std;
void show(const char *msg, set<int> mp);
int main() {
  set<int> m1, m2;
  m1.insert(100);
  m1.insert(300);
  m1.insert(200);
  // Scambiare il contenuto di m1 e m2.
  cout << "Scambiare il contenuto di m1 e m2.\n";
  swap(m1,m2);
  show("Contenuto di m2: ", m2);
  show("Contenuto di m1: ", m1);
 // Svuotare m1.
  m1.clear();
  if(m1.empty()) cout << "m1 è ora vuoto.";
  return 0;
}
// Utilizzando l'iteratore visualizzare il contenuto di set<string, int>.
void show(const char *msg, set<int> mp) {
  set<int>::iterator itr;
  cout << msg << endl;
  for(itr=mp.begin(); itr != mp.end(); ++itr)
    cout << " " << *itr << endl;
  cout << endl;
}

Output:

Scambia il contenuto di m1 e m2.
Contenuto di m2: 
  100
  200
  300
Contenuto di m1: 
m1 è ora vuoto.

Nell'esempio sopra, il contenuto dell'insieme m1 è stato scambiato con l'insieme m2 e l'insieme è stato cancellato dopo lo scambio di m1.

Set (insieme) STL C++