重载 C++ 运算符 >> 这样我就可以读取一个向量(向量 <int> 向量;)

Overload c++ operator >> so i can read a vector (vector <int> vector;)

我想知道如何重载 >> 运算符,这样我就可以读取向量或矩阵,只需执行 cin >> vector vector()。

谢谢!

  template <typename T>
  std::istream& operator>>(std::istream& is, std::vector<T>& v) {
    std::copy(std::istream_iterator<T>(is), std::istream_iterator<T>(),
              std::back_inserter(v));
    return is;
  }

假设您使用的是命名空间标准;并且矢量的大小在您阅读它们之前已经分配,​​这将起作用。

template<class T> istream& operator>>(istream &is,vector<T> &V){
    for(auto &x : V) is >> x;
    return is;
}
template<class T> istream& operator>>(istream &is,vector<vector<T>> &V){
    for(auto &x : V) is >> x;
    return is;
}