我想知道如何重载>>运算符,所以我可以读取一个向量或矩阵只是做cin>>矢量矢量()。
谢谢!
答案 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;
}