vendredi 15 janvier 2021

c++ how to overload operator >> to vector

    #include <iostream>
#include <vector>

// // C++ template to print vector container elements
template <typename T>
std::ostream &operator<<(std::ostream &os, const std::vector<T> &v)
{
    os << "[";
    for (int i = 0; i < v.size(); ++i)
    {
        os << v[i];
        if (i != v.size() - 1)
            os << ", ";
    }
    os << "]\n";
    return os;
}

//Operator overload >> (std::cin)
template <typename T>
std::istream &operator>>(std::istream &in, std::vector<T> &v)
{

    for(int i =0;i<v.size();i++)
    {
        in>>v[i];
    }
    return in;
}

//TEST
//  ↓

int main()
{
    std::vector<int> vec{4, 2, 17, 11, 15};
    std::vector<int> dupa;

    std::cin >> dupa;
    std::cout << vec;

    return 0;
}

How can i overload operator >> ?? I don't know how to do it with std :: istream, I get an error "Core Dump (Segmentation fault)" :( I saw such a task somewhere on the Internet and I wanted to do it, but there is no solution. I don't want to use "v.push_back (..)"

Aucun commentaire:

Enregistrer un commentaire