std::vector の追加のサポートを追加しようとしています。ここに私がこれまでに持っているコードがあります..動作しない部分は、結果を印刷しようとする部分です。私は valarray を認識していますが、思い通りに動作させることができません (ほとんどの場合、ベクトルを valarray に変換する簡単な方法が見つかりませんでした)。
これはエラーです:
../src/VectorOperations.cpp:26:6: error: need 'typename' before 'std::vector<T>::iterator' because 'std::vector<T>' is a dependent scope
class VectorOperations
{
public:
//Vector Operations
std::vector<double> logv(std::vector<double> first);
std::vector<double> raiseTo(std::vector<double> first, int power);
std::vector<double> xthRoot(std::vector<double> first, int xth);
double sumv(std::vector<int> first);
std::vector<double> operator + ( const std::vector<double> & ) const;
std::vector<double> operator - ( const std::vector<double> & ) const;
std::vector<double> operator * ( const std::vector<double> & ) const;
std::vector<double> operator / ( const std::vector<double> & ) const;
};
template <typename T>
std::vector<T> operator+(const std::vector<T>& a, const std::vector<T>& b)
{
assert(a.size() == b.size());
std::vector<T> result;
result.reserve(a.size());
std::transform(a.begin(), a.end(), b.begin(),
std::back_inserter(result), std::plus<T>());
std::cout<<"Results from addition follow: \n";
//HERE'S THE PROBLEM: I WANT TO PRINT OUT BUT I GET ERRORS
for(std::vector<T>::iterator it = a.begin(); it != a.end(); ++it) {
/* std::cout << *it; ... */
}
return result;
}