Это невозможно или, по крайней мере, не так, как вы хотите.Если вы пытаетесь реализовать бинарную древовидную структуру, взгляните на бинарное дерево таким образом, у вас есть древовидная структура, в которой вы можете выделять только то, что вам нужно динамически.
, если вам все еще нужномассивы не используют старые массивы в стиле c, комитет по c ++ активно обновляет стандарт с 1998 года, а современный способ работы с массивами - использование std :: array .Если вы работаете в среде, где вы работаете со старыми C-API, напишите свою логику в современной c ++ статической библиотеке , скомпилируйте ее и создайте ссылку на эту библиотеку в вашем C-API.
При этом Если вы беспокоитесь о проблемах с производительностью или памятью, вам следует пересмотреть свой образ мышления, многие молодые разработчики увлеклись этим типом мышления и в итоге написали код, который не был бы ни быстрым, ни изящнымс точки зрения дизайна (это называется код пессимизации ).Когда вы пишете программу, сначала начните с удобочитаемого и простого дизайна, затем выполните профилирование и выясните, что является медленным и должно быть оптимизировано.
, если вам действительно нужно, чтобы некоторые значения в массиве были нулевыми, чтобы вы моглиделать с ним сумасшедшие вещи (такие как проверка на ноль, что я бы очень не рекомендовал), вы должны заключить вас в другое целое число:
class Integer
{
public:
explicit Integer(int value)
{
value_ = value;
};
Integer &operator=(Integer other)
{
value_ = other.value_;
};
private:
int value_;
};
class test
{
public:
test()
{
Integer four(4);
std::array<std::unique_ptr<Integer>, 2> arr = { std::make_unique<Integer>(four), nullptr};
};
};
ПРИМЕЧАНИЕ I: То, что я написал выше, - всего лишь уловка, так что вы знаете,в C ++ все возможно, однако сложность того, что я только что написал для достижения того, что вы хотели, должна убедить вас, что это не очень хороший подход для вашего простого случая.
ПРИМЕЧАНИЕ II: Код не проверен, неиспользуйте это как есть в производственном коде.