std:: set
|
Défini dans l'en-tête
<set>
|
||
|
template
<
class
Key,
|
(1) | |
|
namespace
pmr
{
template
<
|
(2) | (depuis C++17) |
std::set
est un conteneur associatif qui contient un ensemble trié d'objets uniques de type
Key
. Le tri est effectué en utilisant la fonction de comparaison de clés
Compare
. Les opérations de recherche, suppression et insertion ont une complexité logarithmique. Les ensembles sont généralement implémentés sous forme d'
arbres rouge-noir
.
Partout où la bibliothèque standard utilise les Compare exigences, l'unicité est déterminée en utilisant la relation d'équivalence. En termes imprécis, deux objets a et b sont considérés équivalents si aucun n'est comparé comme inférieur à l'autre : ! comp ( a, b ) && ! comp ( b, a ) .
std::set
satisfait aux exigences de
Container
,
AllocatorAwareContainer
,
AssociativeContainer
et
ReversibleContainer
.
Toutes les fonctions membres de
std::set
sont
constexpr
: il est possible de créer et d'utiliser des objets
std::set
dans l'évaluation d'une expression constante.
Cependant, les objets
|
(depuis C++26) |
Sommaire
Paramètres du modèle
Types membres
Fonctions membres
Fonctions non membres
Notes
Les types membres
Exemple
Exécuter ce code
#include <algorithm> #include <iomanip> #include <iostream> #include <iterator> #include <set> #include <string_view> template<typename T> std::ostream& operator<<(std::ostream& out, const std::set<T>& set) { if (set.empty()) return out << "{}"; out << "{ " << *set.begin(); std::for_each(std::next(set.begin()), set.end(), [&out](const T& element) { out << ", " << element; }); return out << " }"; } int main() { std::set<int> set{1, 5, 3}; std::cout << set << '\n'; set.insert(2); std::cout << set << '\n'; set.erase(1); std::cout << set << "\n\n"; std::set<int> keys{3, 4}; for (int key : keys) { if (set.contains(key)) std::cout << set << " contient " << key << '\n'; else std::cout << set << " ne contient pas " << key << '\n'; } std::cout << '\n'; std::string_view word = "element"; std::set<char> characters(word.begin(), word.end()); std::cout << "Il y a " << characters.size() << " caractères uniques dans " << std::quoted(word) << ":\n" << characters << '\n'; } Sortie : { 1, 3, 5 }
{ 1, 2, 3, 5 }
{ 2, 3, 5 }
{ 2, 3, 5 } contient 3
{ 2, 3, 5 } ne contient pas 4
Il y a 5 caractères uniques dans "element":
{ e, l, m, n, t }
Rapports de défautsLes rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
Voir aussi
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||