Определение размера массива с помощью переменной в структуре

Я уже пытался определить размер массива с помощью переменной в C ++, и, хотя я не полностью понимаю концепцию динамической памяти, я заставил ее работать. Однако я не знаю, как сделать то же самое с «точкой» массива в этом случае.

num=50;
struct pos
{
double x;
};

struct pos point[num];

Есть ли что-то очевидное, что я пропускаю?

0

Решение

Эти типы размеров массивов должны быть постоянными времени компиляции, чтобы компилятор знал, сколько памяти резервировать.

int count = 50;
int arr[count] // error!

static const int count = 50;
int arr[count]; // OK!

Другой вариант — это динамически выделяемая память, размер которой известен во время выполнения.

int count = 50;
int* arr = new int[count];
delete [] arr;

Однако, как правило, вы не хотите иметь дело с необработанными указателями и выделением памяти самостоятельно, а вместо этого должны предпочесть:

#include <vector>

int count = 50;
std::vector<int> arr(count);

Это также будет работать для любых пользовательских типов, которые вы предоставили, если они копируемые (подсказка: ваш пример pos структура копируемая):

#include <vector>

int count = 50;
std::vector<pos> arr(count);

arr[0].x = 1;
// ... etc
arr[49].x = 49;

std::vector имеет богатый интерфейс и все детали можно найти здесь

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]