Indeed an existing library might be a good choice.
If you do want to reinventthe wheel or write your own, then the sample below shouldgive you some ideas on how to get started.
Alternatively and even simpler, you might consider sinply expandingthe existing STL-vector template.
Look at the sample.
Sincerely, Chris.
#include <iostream>
template<typename T> class row_vector
{
private:
const size_t m_size;
T* m_data;
public:
row_vector(const T* p, const size_t n) : m_size(n)
{
m_data = new T[m_size];
for(size_t i = 0; i < m_size; i++)
{
m_data[i] = p[i];
}
}
~row_vector()
{
delete [] m_data;
}
public:
const T& operator[](const size_t i) const { return m_data[i]; }
const size_t size(void) const { return m_size; }
static const T dot(const row_vector& v1, const row_vector& v2)
{
T sum(0);
if(v1.size() == v2.size())
{
for(size_t i = 0; i < v1.size(); i++)
{
sum += v1[i] * v2[i];
}
}
return sum;
}
};
int main(int argc, char* argv[])
{
const double d1[] = { 1.1, 2.2, 3.3 };
const double d2[] = { 4.4, 5.5, 6.6 };
row_vector<double> v1(d1, sizeof(d1) / sizeof(d1[0]));
row_vector<double> v2(d2, sizeof(d2) / sizeof(d2[0]));
std::cout << row_vector<double>::dot(v1
return 0;
}
Main Topics
Browse All Topics





by: jkrPosted on 2004-02-08 at 11:13:33ID: 10304355
You'd use a Matrix library for that, e.g. MTL (Matrix template library) from http://www.osl.iu.edu/rese arch/mtl/ or http://tvmet.sourceforge.n et/ ("C++ library for "tiny" vectors and matrices with expression templates"), http://math.nist.gov/mv++ ("Numerical Matrix/Vector Classes in C++ ")