English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C++ swap()La funzione utilizzata per scambiare (o sostituire) i contenuti di due set, ma entrambi i setTipoDeveUgualeNonostante le dimensioni possano essere diverse.
void swap(set& x);
x:Il contenitore con cui scambiare il contenuto.
Nessuno
Immutabile.
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.
Il contenitore e x vengono modificati.
Se viene lanciata un'eccezione, non ha alcun impatto sul contenitore.
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.
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
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.
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.