Если я правильно понимаю, что вы хотите (что я не уверен, что я делаю), вы хотите иметь возможность создать место для хранения объектов и использовать их в соответствии с некоторым номером индекса, но только для создания определенных объектовкоторые идут в нем по требованию.Вы хотите сделать это либо потому, что 1) вы не знаете, сколько объектов вы собираетесь создать, либо 2) вы не собираетесь использовать каждый индекс или 3) оба.
If (1) тогда вам, вероятно, следует просто использовать вектор, который представляет собой массивоподобную структуру, которая автоматически увеличивается по мере добавления к ней большего количества объектов.Посмотрите std :: vector.
Если (2), то вы можете использовать массив указателей и изначально установить все значения в null, а затем использовать new
для создания объектов по мере необходимости.(Или вы можете воспользоваться рекомендацией решения в части 3.)
Если (3), то вы хотите использовать какую-то форму карты или хэш-таблицы.Эти структуры позволят вам находить вещи по номерам, даже если не все числа используются, и будут расти по мере необходимости.Я очень рекомендую хеш-таблицу, но в C ++ ее нет в STL, поэтому вам нужно создать свою собственную или найти ее в сторонней библиотеке.Для простоты вы можете использовать std :: map, который является частью STL.Это в основном то же самое, но медленнее.Некоторые дистрибутивы C ++ также включают std :: hash_map.Если он доступен, его следует использовать вместо этого, потому что он будет быстрее, чем std :: map.