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

C++ Tutoriel de base

C++ Mots-clés et identificateurs

C++ Instructions goto

C++ Retourner une référence

C++ Chaînes

C++ Ensemble (enum)

C++ Surcharge des opérateurs

C++ Gestion de la mémoire

C++ Modèles

C++ Map (conteneur)

C++ <cmath>

C++ Set (ensemble) STL

C ++ std swap() Utilisation et exemple stdswap (set) ++CsetdeFonction non membre。Cela est utilisé pour échanger (ou remplacer) le contenu de deux ensembles (c'est-à-dire x et y), mais les types des deux ensembles doivent être les mêmes, et la taille des ensembles peut être différente.

Syntaxe

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

paramètre

x:L'objet de la première collection set.

y:deuxième objet du même type.

Retour de valeur

Pas

Complexité

Inchangé.

Validité des itérateurs

Tous les itérateurs référençant les éléments des deux conteneurs, les références et les pointeurs restent valides.

Veuillez noter que l'itérateur de fin ne fait pas référence à l'élément et peut être invalide.

Concurrence des données

Les conteneurs x et y sont modifiés.

L'appel ne contient aucune des éléments inclus.

Sécurité des exceptions

Cette fonction ne provoque pas d'exception.

实例1

Voyons un exemple simple, échanger un ensemble d'éléments avec un autre ensemble :

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   set<char> m1 = {'a','b','c','d'};
   set<char> m2;
   swap(m1, m2);
   cout << "Le ensemble contient les éléments suivants" << endl;
   for (auto it = m2.begin(); it != m2.end(); ++it)
      cout << *it<< endl;
   return 0;
}

Sortie :

Le ensemble contient les éléments suivants
a
b
c
d

Dans l'exemple ci-dessus, l'ensemble m1composé de cinq éléments, tandis que m2S'il vous plaît remplir.1交换为m2时,m1的所有元素都将交换为m2。

实例2

让我们看一个简单的示例来交换两个集合的内容:

#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;
}

Sortie :

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

在上面的示例中,两个集合(即set1和set2)的内容相互交换。

实例3

让我们看一个简单的示例来交换两个集合的内容:

#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 包含:";
  for (set<int>::iterator it=first.begin(); it!=first.end(); ++it)
    cout << ' ' << *it;
  cout << '\n';
  cout << "second 包含:";
  for (set<int>::iterator it=second.begin(); it!=second.end(); ++it)
    cout << ' ' << *it;
  cout << '\n';
  return 0;
}

Sortie :

first 包含: 20 25 32
second 包含: 10 12 75

实例4

让我们看一个简单的实例:

#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);
  // échanger m1et m2Le contenu.
  cout << "交换m1et m2的内容。\n";
  swap(m1,m2);
  show("m2内容: ", m2);
  show("m1内容: ", m1);
 // Clear m1.
  m1.clear();
  if(m1.empty()) cout << "m1 is now empty.";
  return 0;
}
// 通过使用迭代器显示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;
}

Sortie :

échanger m1et m2Le contenu.
m2Contenu: 
  100
  200
  300
m1Contenu: 
m1 est maintenant vide.

Dans l'exemple ci-dessus, l'ensemble m1Le contenu a été échangé avec l'ensemble m2et après avoir échangé m1Après cela, l'ensemble a été effacé.

C++ Set (ensemble) STL