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; }
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; }
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; }
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; }
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; }
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; }
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