#include <cassert>
#include <cstddef>
#include <cstdio>
class Vector
{
public:
Vector(std::size_t dim);
~Vector();
double &operator()(std::size_t index);
double operator()(std::size_t index) const;
double *data;
std::size_t dim;
};
Vector::Vector(std::size_t dim)
: data(new double[dim]), dim(dim)
{
}
Vector::~Vector()
{
delete [] data;
}
double &
Vector::operator()(std::size_t index)
{
assert(index < dim);
return data[index];
}
double
Vector::operator()(std::size_t index) const
{
assert(index < dim);
return data[index];
}
void
print(const Vector &x)
{
for (size_t i = 0; i < x.dim; ++i) {
std::printf("%lf", x(i));
if (i + 1 < x.dim) {
std::printf(", ");
}
}
}
int
main(void)
{
Vector x(4);
for (std::size_t i = 0; i < x.dim; ++i) {
x(i) = 42 + i;
}
print(x);
printf("\n");
}