Program Listing for File Triangle.h#
↰ Return to documentation for file (src/main/cpp/lib/Triangle.h)
#ifndef TRIANGLE_H_
#define TRIANGLE_H_
#include <cstddef>
#include <vector>
#include <cassert>
template<typename T, size_t dim>
class Triangle
{
private:
typename std::vector<T> m_data;
public:
Triangle () :
m_data (dim * (dim + 1) / 2, T ())
{
}
Triangle (const std::vector<T> data) :
m_data (data)
{
assert(m_data.size () == dim * (dim + 1) / 2);
}
virtual
~Triangle ()
{
}
const T&
at (size_t i, size_t j) const
{
assert(i < dim);
assert(j <= i);
return m_data.at (i * (i + 1) / 2 + j);
}
T&
at (size_t i, size_t j)
{
assert(i < dim);
assert(j <= i);
return m_data.at (i * (i + 1) / 2 + j);
}
};
#endif /* TRIANGLE_H_ */