Ce face std::vector::assign
assign șterge elementele vechi și pune în locul lor elemente noi. Este util când vrei să reumpli un vector existent, de exemplu cu valori din alt container de alt tip, unde simpla atribuire = nu merge.
Toți iteratorii și referințele vechi devin invalide.
Parametri
| Parametru | Descriere |
|---|---|
n, valoare |
Noul conținut: n elemente egale cu valoare. |
prim, ultim |
Un interval din orice container (sau tablou). |
lista |
O listă între acolade. |
Ce returnează
Nimic (void).
Exemple
Exemplul 1: Trei feluri de a reumple vectorul
#include <list>
#include <print>
#include <vector>
int main() {
std::vector<int> v{1, 2, 3};
v.assign(4, 7);
std::println("{}", v);
std::list<int> lista{10, 20, 30};
v.assign(lista.begin(), lista.end()); // din alt tip de container
std::println("{}", v);
v.assign({5, 6});
std::println("{}", v);
}
Rezultat
[7, 7, 7, 7]
[10, 20, 30]
[5, 6]
Greșeli frecvente
- Folosești
assigncu iteratori din același vector (v.assign(v.begin() + 1, v.end())). Nu este permis; copiază întâi intervalul sau foloseșteerase.
Comenzi înrudite
std::vector::resize: Schimbă numărul de elemente: adaugă elemente noi la final sau le șterge pe cele în plus.std::vector::insert: Inserează unul sau mai multe elemente înaintea unei poziții din vector; emplace construiește elementul pe loc.std::vector::clear: Șterge toate elementele vectorului; dimensiunea devine 0, dar memoria rezervată rămâne.