I need to cout a vector. Not just an element of it, but the whole thing. For example std::cout << vectorName; Something like that, hope it makes sense. Any ideas? Thanks in advance
            Asked
            
        
        
            Active
            
        
            Viewed 1.7k times
        
    5
            
            
        - 
                    3`std::copy` is your friend. – Ulrich Eckhardt Sep 25 '15 at 15:17
- 
                    Seems relevant: http://stackoverflow.com/q/4850473/2069064 – Barry Sep 25 '15 at 15:21
- 
                    @UlrichEckhardt God no. – Barry Sep 25 '15 at 15:24
- 
                    3`std::copy(v.begin(), v.end(), std::ostream_iterator(std::cout, " "));` – Jonathan H Sep 25 '15 at 15:25
2 Answers
8
            You can either define a utility function like
template <typename T>
std::ostream& operator<<(std::ostream& output, std::vector<T> const& values)
{
    for (auto const& value : values)
    {
        output << value << std::endl;
    }
    return output;
}
Or iterate yourself
for (auto const& value : values)
{
    std::cout << value << std::endl;
}
 
    
    
        happy-san
        
- 810
- 1
- 7
- 27
 
    
    
        Cory Kramer
        
- 114,268
- 16
- 167
- 218
4
            
            
        Yes, it is possible - if you define operator<< for your vector. Something like this:
#include <iterator>
template <class T>
std::ostream& operator<<(std::ostream& out, const std::vector<T>& container) {
   out << "Container dump begins: ";
   std::copy(container.cbegin(), container.cend(), std::ostream_iterator<T>(out, " " ));
   out << "\n";
   return out;
}
 
    