Ce face std::set::insert
insert pune valoarea la locul ei în ordinea sortată. Dacă valoarea există deja, setul rămâne neschimbat. Rezultatul (pentru o singură valoare) este o pereche: .first este iteratorul la element, .second este true dacă valoarea a fost nouă.
Asta face din insert(...).second un test rapid de tipul „am mai văzut această valoare?”. Există și emplace, care construiește valoarea din argumente.
Parametri
| Parametru | Descriere |
|---|---|
valoare |
Elementul de adăugat. |
prim, ultim / lista |
Mai multe valori deodată. |
Ce returnează
std::pair<iterator, bool> pentru o valoare; nimic pentru interval sau listă.
Exemple
Exemplul 1: Primul duplicat dintr-o listă
#include <print>
#include <set>
#include <string>
#include <vector>
int main() {
std::vector<std::string> bonuri{"B101", "B205", "B330", "B205", "B412"};
std::set<std::string> vazute;
for (const auto& bon : bonuri) {
if (!vazute.insert(bon).second) {
std::println("Bon dublat: {}", bon);
}
}
vazute.insert({"B500", "B101"});
std::println("{}", vazute);
}
Rezultat
Bon dublat: B205
{"B101", "B205", "B330", "B412", "B500"}
Greșeli frecvente
- Verifici cu
findși apoi inserezi: două căutări.insertface ambele și îți spune rezultatul.
Comenzi înrudite
std::set: Mulțime ordonată de valori unice: elimină automat duplicatele și păstrează elementele sortate.std::set::find: Caută o valoare în set: find() returnează un iterator (sau end()), contains() și count() spun dacă există.std::map::insert: Adaugă o pereche cheie-valoare doar dacă cheia nu există; spune prin rezultat dacă a adăugat-o.