c ++: создание массивов неизвестного размера [дубликат]

просто поместите scanf ("% d \n", & amp; loops);

вместо scanf ("% d", & amp; loops);

9
задан fredoverflow 27 June 2011 в 12:12
поделиться

3 ответа

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)))

17
ответ дан MSalters 17 August 2018 в 12:06
поделиться

Если вы можете утверждать, что ваши векторные размеры будут иметь фиксированную длину, то почему бы не использовать std::array?

Например:

std:array<std::array<std::array<int, 100>, 100>, 100>

Таким образом, вы можете использовать всю память, которая смежно распределена (как указано в Viktor_Sehr в комментариях), без дополнительных проблем реализации доступа к 1-мерному массиву в 3-мерный способ.

0
ответ дан Community 17 August 2018 в 12:06
поделиться
my_class::my_class()
 : m_input(100, std::vector< std::vector<int> >(100, std::vector<int>(100) ))
{
}

Тем не менее, реализация многомерного поля должна выполняться путем проецирования в одномерную, как сказал Виктор в своем комментарии к вопросу.

6
ответ дан sbi 17 August 2018 в 12:06
поделиться
  • 1
    Мне нравится этот конструктор вектора :) – Armen Tsirunyan 27 June 2011 в 11:08
  • 2
    Это должно быть std::vector<int>, конечно? – Puppy 27 June 2011 в 11:29
  • 3
    sbi: std::string name = "Viktor"; assert(name[2] == 'k'); – Viktor Sehr 27 June 2011 в 11:55
  • 4
    @Armen: если бы я мог скомпенсировать комментарий, то я бы понизил ваш рейтинг; Самое важное сообщение sbi находится в тексте этого ответа не в коде, re должно быть сделано ... – FrankH. 27 June 2011 в 12:35
  • 5
    @FrankH. Да ... так ... э ... почему это должно заставить меня не любить конструктор вектора? :) – Armen Tsirunyan 27 June 2011 в 12:56
Другие вопросы по тегам:

Похожие вопросы: