Vector a la biblioteca de plantilles estàndard C ++ (STL) amb exemple

Què és un vector C ++?

A VECTOR C ++ és una matriu dinàmica capaç de redimensionar-se automàticament. El canvi de mida es produeix després que s'ha afegit o esborrat un element del vector. El contenidor gestiona l’emmagatzematge automàticament. Els elements d’un vector s’emmagatzemen en un emmagatzematge contigu. Això permet als programadors de C ++ accedir i recórrer els elements vectorials mitjançant iteradors.

La inserció de noves dades a un vector es fa al final. Això necessita un temps diferencial. L'eliminació d'un element d'un vector requereix temps constant. El motiu és que no cal canviar la mida del vector. La inserció o supressió d’un element al principi del vector requereix temps lineal.

En aquest tutorial de C ++, aprendreu:

Quan s'utilitza un vector?

S'ha d'utilitzar un vector C ++ en les circumstàncies següents:

  • Quan es tracta d’elements de dades que canvien constantment.
  • Si no es coneix la mida de les dades abans de començar, el vector no requerirà que definiu la mida màxima del contenidor.

Com inicialitzar els vectors en C ++

La sintaxi dels vectors en C ++ és:

 vector name (items) 
  • Com es mostra més amunt, comencem per la paraula clau vectorial.
  • El tipus de dades és el tipus de dades dels elements que s’han d’emmagatzemar al vector.
  • El nom és el nom del vector o dels elements de dades.
  • Els ítems indiquen el nombre d'elements de les dades del vector. Aquest paràmetre és opcional.

Iteradors

El propòsit dels iteradors és ajudar-nos a accedir als elements que s’emmagatzemen en un vector. És un objecte que funciona com un punter. A continuació, es detallen els iteradors habituals suportats pels vectors C ++:

  • vector :: begin (): dóna un iterador que apunta al primer element del vector.
  • vector :: end (): dóna un iterador que apunta a l'element final del vector.
  • vector :: cbegin (): és el mateix que vector :: begin (), però no té la capacitat de modificar elements.
  • vector :: cend (): és el mateix que vector :: end () però no pot modificar elements vectorials.

Modificadors

Els modificadors s’utilitzen per canviar el significat del tipus de dades especificat. Aquests són els modificadors comuns a C ++:

  • vector :: push_back (): Aquest modificador empeny els elements des de la part posterior.
  • vector :: insert (): Per inserir elements nous a un vector en una ubicació especificada.
  • vector :: pop_back (): Aquest modificador elimina els elements vectorials de la part posterior.
  • vector :: erase (): S'utilitza per eliminar un rang d'elements de la ubicació especificada.
  • vector :: clear (): Elimina tots els elements vectorials.

Exemple 1

 #include #include using namespace std; int main() { vector nums; for (int a = 1; a <= 5; a++) nums.push_back(a); cout << 'Output from begin and end: '; for (auto a = nums.begin(); a != nums.end(); ++a) cout << *a << ' '; cout << '
Output from cbegin and cend: '; for (auto a = nums.cbegin(); a != nums.cend(); ++a) cout << *a << ' '; return 0; } 

Sortida:

Aquí teniu una captura de pantalla del codi:

Explicació del codi:

  1. Incloeu el fitxer de capçalera iostream al nostre codi. Ens permetrà llegir i escriure a la consola.
  2. Incloeu el fitxer de capçalera vectorial al nostre codi. Ens permetrà treballar amb vectors en C ++.
  3. Incloeu l’espai de noms std per utilitzar les seves classes i funcions sense trucar-lo.
  4. Truqueu a la funció main () dins de la qual s'hauria d'afegir la lògica del programa.
  5. {Marca l’inici del cos de la funció main ().
  6. Declareu un vector anomenat nums per emmagatzemar un conjunt de nombres enters.
  7. Creeu un bucle for per ajudar-nos a repassar el vector. La variable ens ajudarà a iterar sobre els elements vectorials, a partir de 1ca 5thelements.
  8. Introduïu els elements al número numèric de la part posterior. Per a cada iteració, això afegirà el valor actual de la variable a al vector, que és d’1 a 5.
  9. Imprimiu text a la consola
  10. Utilitzeu una variable iteradora a per recórrer els elements dels nombres vectorials des del principi fins a l’element final. Tingueu en compte que estem utilitzant iteradors vector :: begin () i vector :: end ().
  11. Imprimiu els valors assenyalats per la variable iteradora an a la consola per a cada iteració.
  12. Imprimiu text a la consola. El n és un caràcter de línia nou, que mou el cursor a la nova línia per imprimir des d'allà.
  13. Utilitzeu una variable iteradora per iterar sobre els elements dels nombres vectorials des del principi fins a l'element passat-final. Tingueu en compte que estem fent servir iteradors vector :: cbegin () i vector :: cend ().
  14. Imprimiu els valors assenyalats per la variable iteradora a a la consola per a cada iteració.
  15. La funció principal hauria de retornar un valor si el programa s’executa correctament.
  16. Final del cos de la funció main ().

Exemple 2

 #include #include using namespace std; int main() { vector nums; nums.assign(5, 1); cout << 'Vector contents: '; for (int a = 0; a < nums.size(); a++) cout << nums[a] << ' '; nums.push_back(2); int n = nums.size(); cout << '
Last element: ' << nums[n - 1]; nums.pop_back(); cout << '
Vector contents: '; for (int a = 0; a < nums.size(); a++) cout << nums[a] << ' '; nums.insert(nums.begin(), 7); cout << '
First element: ' << nums[0]; nums.clear(); cout << '
Size after clear(): ' << nums.size(); } 

Sortida:

Aquí teniu una captura de pantalla del codi:

Explicació del codi:

  1. Incloeu el fitxer de capçalera iostream al nostre codi per utilitzar les seves funcions.
  2. Incloeu el fitxer de capçalera vectorial al nostre codi per utilitzar les seves funcions.
  3. Incloeu l’espai de noms std per utilitzar les seves classes sense trucar-lo.
  4. Truqueu a la funció main (). La lògica del programa s'ha d'afegir dins del seu cos.
  5. L’inici del cos de la funció main ().
  6. Declareu un vector anomenat nums per emmagatzemar alguns valors enters.
  7. Emmagatzemeu 5 elements als nombres vectorials. Cadascun amb un valor d'1.
  8. Imprimiu text a la consola
  9. Utilitzeu una variable iteradora a per repetir els elements dels nombres vectorials.
  10. Imprimiu els valors dels nombres vectorials a la consola per a cada iteració.
  11. Afegiu el valor 2 al final dels nombres vectorials.
  12. Declareu una variable sencera n per emmagatzemar la mida dels nombres vectorials.
  13. Imprimiu l'últim valor dels nombres vectorials junt amb un altre text. Hauria de tornar un 2.
  14. Elimineu l'últim element dels nombres vectorials. El 2 s’eliminarà.
  15. Imprimiu text a la consola. N mou el cursor a la nova línia per imprimir-hi el text.
  16. Utilitzeu una variable iteradora a per repetir els elements dels nombres vectorials.
  17. Imprimiu els valors dels nombres vectorials a la consola per a cada iteració.
  18. Inseriu el valor 7 al començament dels números numèrics.
  19. Imprimiu el primer valor dels números vectorials junt amb un altre text. Hauria de tornar 7.
  20. Suprimiu tots els elements dels nombres vectorials.
  21. Imprimiu la mida del número de vector junt amb un altre text després d'esborrar tot el contingut. Hauria de retornar 0.
  22. Final del cos de la funció main ().

Capacitat

Utilitzeu les funcions següents per determinar la capacitat d'un vector:

  • Mida () - Retorna el nombre d’elements d’un vector.
  • Mida_màxima () -Torna el nombre més elevat d’elements que un vector pot emmagatzemar.
  • Capacitat () –It retorna la quantitat d'espai d'emmagatzematge assignat a un vector.
  • Redimensiona () –It canvia la mida del contenidor per contenir n elements. Si la mida actual del vector és superior a n, els elements posteriors s'eliminaran del vector. Si la mida actual del vector és inferior a n, s'afegiran elements addicionals a la part posterior del vector.
  • Buit () –i t torna cert si un vector està buit, en cas contrari, torna fals.

Exemple 3

 #include #include using namespace std; int main() { vector vector1; for (int x = 1; x <= 10; x++) vector1.push_back(x); cout << 'Vector size: ' << vector1.size()<< endl; cout << 'Vector capacity: ' << vector1.capacity() << endl; cout << 'Maximum size of vector: ' << vector1.max_size()<< endl; vector1.resize(5); cout << 'Vector size after resizing: ' << vector1.size() << endl; if (vector1.empty() == false) cout << 'Vector is not empty'<

Sortida:

Aquí teniu una captura de pantalla del codi:

Explicació del codi:

  1. Incloeu el fitxer de capçalera iostream al nostre codi per utilitzar la seva funció.
  2. Incloeu el fitxer de capçalera vectorial al nostre codi per utilitzar les seves funcions.
  3. Incloeu l’espai de noms std al nostre codi per utilitzar les seves classes sense trucar-lo.
  4. Truqueu a la funció main (). La lògica del programa s'ha d'afegir dins del cos d'aquesta funció.
  5. Creeu un vector anomenat vector1 per emmagatzemar enters.
  6. Utilitzeu un bucle for per crear la variable x amb valors de l'1 al 10.
  7. Introduïu els valors de la variable x al vector.
  8. Imprimiu la mida del vector junt amb un altre text de la consola.
  9. Imprimiu la capacitat del vector junt amb altres textos de la consola.
  10. Imprimiu el nombre màxim d'elements que el vector pot contenir al costat d'altres textos de la consola.
  11. Canvieu la mida del vector per contenir només 5 elements.
  12. Imprimiu la nova mida del vector junt amb un altre text.
  13. Comproveu si el vector no està buit.
  14. Imprimiu text a la consola si el vector no està buit.
  15. Utilitzeu una instrucció else per indicar què heu de fer si el vector està buit.
  16. Text per imprimir a la consola si el vector està buit.
  17. El programa ha de retornar el valor quan es completi amb èxit.
  18. Final del cos de la funció principal ().

Resum:

  • Un vector C ++ és una matriu dinàmica capaç de redimensionar-se automàticament quan s’afegeix o suprimeix un element.
  • El contenidor gestiona automàticament l’emmagatzematge d’un vector.
  • Els elements d'un vector s'emmagatzemen en un emmagatzematge contigu per poder accedir-hi i recórrer-los mitjançant iteradors.
  • La inserció de noves dades a un vector es fa al final.
  • La inserció de dades en un vector té un temps diferencial.
  • L'eliminació d'un element d'un vector requereix temps constant.
  • La inserció o supressió d’un element al principi requereix un temps lineal.
  • Els vectors s’han d’utilitzar quan es tracta d’elements de dades que canvien constantment.
  • A més, podeu utilitzar vectors si no es coneix la mida de les dades abans de començar.