I have following std::vector
declaration:
std::vector<std::vector<std::vector<int> > > m_input;
I am initializing it as follows:
m_input.resize (100);
m_output.resize(100);
for (int i = 0; i < 100; ++i) {
m_input [i].resize(100);
m_output[i].resize(100);
for (int j = 0; j < 100; ++j){
m_input [i][j].resize(100);
m_output[i][j].resize(100);
}
}
How can I achieve this via the member initializer list?
Best Answer
std::vector<T>
has a constructor that takes two arguments, a number of elements and an initial value. In your case, you want to initializem_input
with 100 copies of astd::vector<std::vector<int> >
, so it'd be: m_input(100, X)
. Now, thatX
in turn is a vector of 100std::vector<int>
, which in turn contains a hundred ints:: m_input(100, std::vector<std::vector<int> >(100, std::vector<int>(100, 0)))