Diferentes formas de imprimir elementos de vector.

Los vectores son lo mismo que las arrays dinámicas con la capacidad de cambiar su tamaño automáticamente cuando se inserta o elimina un elemento, y el contenedor maneja automáticamente su almacenamiento. Los elementos de los vectores se colocan en almacenamiento contiguo para que se pueda acceder a ellos y recorrerlos mediante iteradores . En los vectores, los datos se insertan al final. Insertar al final toma un tiempo diferencial, ya que a veces puede ser necesario extender la array . Eliminar el último elemento lleva solo un tiempo constante porque no se cambia el tamaño. Insertar y borrar al principio o en el medio es lineal en el tiempo.

Diferentes formas de imprimir todos los elementos de un Vector en C++

Al usar el Operador << de sobrecarga : al sobrecargar el operador << como función de plantilla en el ámbito global, todos los elementos del vector se pueden imprimir iterando uno por uno.

A continuación se muestra el programa C++ para implementar el concepto anterior:

C++

// C++ program to print the elements
// of the vector
#include <iostream>
#include <vector>
using namespace std;
 
template <typename S>
ostream& operator<<(ostream& os,
                    const vector<S>& vector)
{
    // Printing all the elements
    // using <<
    for (auto element : vector) {
        os << element << " ";
    }
    return os;
}
 
// Driver Code
int main()
{
    // vector containing integer elements
    vector<int> A = { 10, 20, 30,
                      40, 50, 60 };
 
    cout << A << endl;
 
    return 0;
}
Producción

10 20 30 40 50 60 

Impresión separada por comas: al evitar la sobrecarga del operador << y al crear una función separada, se puede proporcionar un separador personalizado para imprimir el contenido del vector

A continuación se muestra el programa C++ para implementar el enfoque anterior: 

C++

// C++ program to print the elements
// of the vector using separators
#include <iostream>
#include <vector>
using namespace std;
 
template <typename S>
 
// with_separator() function accepts
// two  arguments i.e., a vector and
// a separator string
void with_separator(const vector<S>& vec,
                    string sep = " ")
{
    // Iterating over all elements of vector
    for (auto elem : vec) {
        cout << elem << sep;
    }
 
    cout << endl;
}
 
// Driver Code
int main()
{
    // Vector containing integer items
    vector<int> int_vec{ 10, 20, 30,
                         40, 50, 60 };
 
    // Printing all elements in vector
    with_separator(int_vec, ", ");
 
    // Vector containing string
    vector<string> str_vec{ "One", "Two",
                            "Three", "Four",
                            "Five" };
 
    // Printing all elements in vector
    with_separator(str_vec, ", ");
    return 0;
}
Producción

10, 20, 30, 40, 50, 60,
One, Two, Three, Four, Five, 

Usando la indexación: Usando el índice de los elementos en el vector, todos los elementos se pueden imprimir.

A continuación se muestra el programa C++ para implementar el concepto anterior:

C++

// C++ program to print the elements
// of the vector by using the index
#include <iostream>
#include <vector>
using namespace std;
 
template <typename S>
void using_index(const vector<S>& vector,
                 string sep = " ")
{
    // Iterating vector by using index
    for (int i = 0; i < vector.size(); i++) {
        // Printing the element at
        // index 'i' of vector
        cout << vector[i] << sep;
    }
    cout << endl;
}
 
// Driver Code
int main()
{
    // Vector containing all integers
    // elements
    vector<int> int_vec{ 10, 20, 30,
                         40, 50, 60 };
 
    // calling using_index() method
    using_index(int_vec);
 
    return 0;
}
Producción

10 20 30 40 50 60 

Imprimir todos los elementos sin bucle for proporcionando el tipo de elemento: todos los elementos de un vector se pueden imprimir utilizando un algoritmo STL copy() . Todos los elementos de un vector se pueden copiar en el flujo de salida proporcionando el tipo de elementos mientras se llama al algoritmo copy().

A continuación se muestra el programa C++ para implementar el enfoque anterior:

C++

// C++ program to print the elements
// of the vector by using iterators
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
 
// Driver Code
int main()
{
    // Vector containing all integer
    // elements
    vector<int> vec_of_nums{ 10, 20, 30,
                             40, 50, 60 };
 
    // Printing all elements in vector
    // Element type provided int while
    // calling copy()
    copy(vec_of_nums.begin(),
         vec_of_nums.end(),
         ostream_iterator<int>(cout, " "));
 
    return 0;
}
Producción

10 20 30 40 50 60 

Usando (experimental::make_ostream_joiner) sin proporcionar el tipo de elemento: En el programa Method-1, se observa que al llamar al algoritmo copy(), el tipo de elementos se proporciona específicamente en el vector. Pero usando C++ 17 experimental::make_ostream_joiner, es posible imprimir todos los elementos de un vector sin especificar el tipo de elementos en el vector mientras se llama a copy().

A continuación se muestra el programa C++ para implementar el enfoque anterior:

C++

// C++ program to print the elements
// of the vector
#include <experimental/iterator>
#include <iostream>
#include <vector>
using namespace std;
 
// Driver Code
int main()
{
    // Vector containing integers
    vector<int> int_vec = { 10, 20, 30,
                            40, 50, 60 };
 
    // Printing all elements in vector
    // Element type not provided while
    // calling copy()
    copy(int_vec.begin(),
         int_vec.end(),
         experimental::make_ostream_joiner(cout, " "));
 
    cout << endl;
    return 0;
}
Producción

10 20 30 40 50 60 

Usando la función Lambda : la función lambda se puede usar en cada elemento del vector y dentro de la función, el elemento se puede imprimir sin proporcionar el tipo del elemento.

A continuación se muestra el programa C++ para implementar el enfoque anterior:

C++

// C++ program to print the elements
// of the vectors
#include <algorithm>
#include <iostream>
#include <vector>
 
// Driver Code
int main()
{
    // Vector containing all
    // integer items
    vector<int> int_vec{ 10, 20, 30,
                         40, 50, 60 };
 
    // Printing all elements in
    // vector
    for_each(int_vec.begin(),
             int_vec.end(),
             [](const auto& elem) {
 
                 // printing one by one element
                 // separated with space
                 cout << elem << " ";
             });
 
    return 0;
}
Producción

10 20 30 40 50 60 

Publicación traducida automáticamente

Artículo escrito por Satyabrata_Jena 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 *