重载 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;
}
我想知道如何重载 >> 运算符,这样我就可以读取向量或矩阵,只需执行 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;
}