【问题标题】:Overload c++ operator >> so i can read a vector (vector <int> vector;)重载 c++ 运算符 >> 这样我就可以读取一个向量 (vector <int> vector;)
【发布时间】:2015-03-07 17:55:51
【问题描述】:

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

谢谢!

【问题讨论】:

  • 到目前为止你做了什么? [这应该可以在常规 operator &lt;&lt; 样板之外的大约三行中实现]

标签: c++ vector overloading operator-keyword


【解决方案1】:
  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;
  }

【讨论】:

    【解决方案2】:

    假设您使用的是命名空间 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多