【发布时间】:2015-03-07 17:55:51
【问题描述】:
我想知道如何重载 >> 运算符,这样我就可以读取向量或矩阵,只需执行 cin >> vector vector()。
谢谢!
【问题讨论】:
-
到目前为止你做了什么? [这应该可以在常规
operator <<样板之外的大约三行中实现]
标签: c++ vector overloading operator-keyword
我想知道如何重载 >> 运算符,这样我就可以读取向量或矩阵,只需执行 cin >> vector vector()。
谢谢!
【问题讨论】:
operator << 样板之外的大约三行中实现]
标签: c++ vector overloading operator-keyword
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;
}
【讨论】:
假设您使用的是命名空间 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;
}
【讨论】: