Different ways to print elements of vector

03 Aug, 2021
Vectors are the same as dynamic arrays with the ability to resize themselves automatically when an element is inserted or deleted, with their storage being handled automatically by the container. The elements of vectors are placed in contiguous storage so that they can be accessed and traversed using iterators. In vectors, data is inserted at the end. Inserting at the end takes differential time, as sometimes there may be a need of extending the array. Removing the last element takes only constant time because no resizing happens. Inserting and erasing at the beginning or in the middle is linear in time.
By using overloading << Operator: By overloading the << operator as template function at global scope, all the elements of the vector can be printed by iterating one by one.
Below is the C++ program to implement the above concept:
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 Codeint 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 
Printing in a comma-separated manner: By avoiding overloading of the << operator and by creating a separate function, a custom separator can be provided to print the contents of the vector
Below is the C++ program to implement the above approach: 
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 stringvoid with_separator(const vector<S>& vec,                    string sep = " "){    // Iterating over all elements of vector    for (auto elem : vec) {        cout << elem << sep;    }     cout << endl;} // Driver Codeint 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, 
By using indexing: By using the index of the elements in the vector, all the elements can be printed.
Below is the C++ program to implement the above concept:
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 Codeint 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 
Printing all elements without for loop by providing element type: All the elements of a vector can be printed using an STL algorithm copy().  All the elements of a vector can be copied to the output stream by providing elements type while calling the copy() algorithm.
Below is the C++ program to implement the above approach:
C++
// C++ program to print the elements// of the vector by using iterators#include <iostream>#include <iterator>#include <vector>using namespace std; // Driver Codeint 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 
Using (experimental::make_ostream_joiner) without providing element type: In the Method-1 program, it is observed that while calling the copy() algorithm, the type of elements is specifically provided in the vector. But using C++ 17 experimental::make_ostream_joiner, it is possible to print all elements of a vector without specifying the type of elements in the vector while calling copy().
Below is the C++ program to implement the above approach:
C++
// C++ program to print the elements// of the vector#include <experimental/iterator>#include <iostream>#include <vector>using namespace std; // Driver Codeint 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 
By using the Lambda function: The lambda function can be used on each element of the vector and inside the function, the element can be printed without providing the type of the element.
Below is the C++ program to implement the above approach:
C++
// C++ program to print the elements// of the vectors#include <algorithm>#include <iostream>#include <vector> // Driver Codeint 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 
sweetyty
kapoorsagar226
arorakashish0911
cpp-containers-library
cpp-vector
C++
C++ Programs
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.