Sutilezas comunes en STL vectoriales

Requisito previo: conceptos básicos de vectores

Los siguientes son algunos puntos importantes que pueden ahorrar tiempo en pequeñas cosas en una entrevista o un concurso de codificación importante.

  1. vector <int> vect(10) vs vector<int> vect[10]
    // Creates a vector vect[] of size 10
    vector <int> vect(10) 
    
    // creates an array of vectors vect[] of size 
    // 10 where each vector has int members
    vector<int> vect[10]
    
  2. resize() y push_back():
    después de usar la función resize() en un vector, si se usa push_back() en el mismo vector, los elementos que se empujan hacia atrás se agregan al final del vector redimensionado, y no en eso.

    // A C++ program to demonstrate that push_back()
    // happens at the end of resized vector.
    #include<bits/stdc++.h>
    using namespace std;
      
    int main()
    {
        vector<int> vect;
        for (int i = 0; i < 5; i++)
            vect.push_back(i);
      
        // Resizing vector to size 10
        vect.resize(10);
      
        // Prints 0 1 2 3 4 0 0 0 0 0
        for (int i = 0; i < vect.size(); i++)
            cout << vect[i] << " ";
        cout << "\n";
      
        vect.push_back(50);
      
        // Prints 0 1 2 3 4 0 0 0 0 0 50
        for (int i = 0; i < vect.size(); i++)
            cout << vect[i] << " ";
      
        return 0;
    }
    Producción:
    0 1 2 3 4 0 0 0 0 0
    0 1 2 3 4 0 0 0 0 0 50
  3. función clear() Hace que el vector tenga cero elementos, es decir, no tiene elementos y no convierte los elementos en ceros.
  4. Creando un vector bidimensional
    // This doesn't work
    vector<vector<int>> vect;
    
    // This works fine
    vector< vector <int> > vect; 

    La diferencia entre estas dos declaraciones es que la primera tiene un espacio entre los corchetes angulares ( > >). Escribir sin el espacio no funciona porque >> es un operador en C++.

  5. Pasar vectores a funciones:
    cuando simplemente se pasa un vector a una función, se crea una copia del vector. Esto puede tomar mucho tiempo en casos de vectores grandes.

    // C++ program to demonstrate that when vectors
    // are passed to functions without &, a copy is
    // created.
    #include<bits/stdc++.h>
    using namespace std;
      
    // The vect here is a copy of vect in main()
    void func(vector<int> vect)
    {
       vect.push_back(30);
    }
      
    int main()
    {
        vector<int> vect;
        vect.push_back(10);
        vect.push_back(20);
      
        func(vect);
      
        // vect remains unchanged after function
        // call
        for (int i=0; i<vect.size(); i++)
           cout << vect[i] << " ";
      
        return 0;
    }

    Producción :

    10 20

    En situaciones en las que en realidad no necesitamos tener una copia del vector, la declaración debe hacerse de la siguiente manera:

    // It is recommended to pass vectors by reference
    // wherever possible.
    int func(vector<int>& vect)
    {
    
    }
    

Este artículo es una contribución de Supiya Shrivatsa . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo electrónico a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *