I mean to build a vector of M N-sized-vectors, i.e., with K=M*N total elements, from a K-sized vector with a linear arrangement of the same set of values. Moreover, I would do that in a class constructor, although I guess that is irrelevant. My code is shown below.
What should I use in the pushback
line?
template <int dim>
class vec2d {
public:
// Constructor - Version 1: 2D array as initializer
vec2d(const std::vector<std::vector<double> >& c);
// Constructor - Version 2: 1D array as initializer
vec2d(const std::vector<double>& c);
...
protected:
std::vector<std::vector<double> > _vec2d;
};
// Version 1: 2D array as initializer
...
// Version 2: 1D array as initializer
template <int dim>
vec2d::vec2d(const std::vector<double>& c)
{
for (size_t i = 0; i < (c.size() / dim); i++)
_vec2d.push_back(std::vector<double>(c(i * dim), c((i+1) * dim - 1))); // <- Fix this line
}