просто поместите scanf ("% d \n", & amp; loops);
вместо scanf ("% d", & amp; loops);
std::vector<T>
имеет конструктор, который принимает два аргумента, число элементов и начальное значение. В вашем случае вы хотите инициализировать m_input
с 100 копиями std::vector<std::vector<int> >
, поэтому это будет : m_input(100, X)
. Теперь X
, в свою очередь, представляет собой вектор 100 std::vector<int>
, который, в свою очередь, содержит сто ints:
: m_input(100, std::vector<std::vector<int> >(100, std::vector<int>(100, 0)))
Если вы можете утверждать, что ваши векторные размеры будут иметь фиксированную длину, то почему бы не использовать std::array
?
Например:
std:array<std::array<std::array<int, 100>, 100>, 100>
Таким образом, вы можете использовать всю память, которая смежно распределена (как указано в Viktor_Sehr в комментариях), без дополнительных проблем реализации доступа к 1-мерному массиву в 3-мерный способ.
my_class::my_class()
: m_input(100, std::vector< std::vector<int> >(100, std::vector<int>(100) ))
{
}
Тем не менее, реализация многомерного поля должна выполняться путем проецирования в одномерную, как сказал Виктор в своем комментарии к вопросу.