重载c ++运算符&gt;&gt;所以我可以读取一个向量(vector <int> vector;)</int>

时间:2015-03-07 17:55:51

标签: c++ vector overloading operator-keyword

我想知道如何重载&gt;&gt;运算符,所以我可以读取一个向量或矩阵只是做cin&gt;&gt;矢量矢量()。

谢谢!

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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