2012-04-11 3 views
3

Если у меня есть этот поплавок объявление массива:длина модифицирование массива в C++

float tables[10]; 

Как я могу изменить размер массива «таблиц» до 20?

Другой вопрос, связанный с массивом в C++:

Я не могу объявить что-то вроде этого массива:

int length=10; 

float newTables[length]; // error C2133: 'newTables' : unknown size 

Спасибо заранее.

ответ

1

Если вы прекрасно определения размера массива во время сборки времени, вы можете использовать #define

#DEFINE ARRAY_SIZE 20 
float tables[ARRAY_SIZE]; 

Или, если вам нужно укажите размер массива во время выполнения, используйте новый

float* newtables; 
newtables = new float[20]; 
+2

Стоит отметить, что вы должны также удалить выделенную память, когда закончите с ней, если вы используете «новый» – TomP89

+0

@Habba: для строки: newTables = new float [20], я получил ошибку: ошибка C2440: '=': не может конвертировать из 'float *' в 'float []' – olidev

+0

@ TomP89 Я могу удалить выделенную память. Это не должно быть проблемой. – olidev

14

Вы не можете изменить длину массива. В C++, вы должны использовать std::vector для динамических массивов:

#include <vector> 

int main() { 
    std::vector::size_type length = 10; 
    std::vector<float> tables(length); // create vector with 10 elements 
    tables.resize(20); // resize to 20 elemets 
    tables[15] = 12; // set element at index 15 to value 12 
    float x = tables[5]; // retrieve value at index 5 
} 
+0

Да, использование вектора проще. спасибо – olidev

1

Массивы в C++ имеют фиксированную длину. Если вы хотите придерживаться чистого массива, вам необходимо динамически выделять память, используя malloc, realloc and free. Однако для распределения динамической памяти вы должны предпочесть std::vector или std::deque.

0

Вы не можете изменить длину массива динамически во время работы программы на C++. О том, как вы хотите, чтобы объявить массив я предлагаю вам следующее:

const int length=10; 
float newTables[length]; 

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

Надеюсь, это вам поможет.

+0

Я хочу изменить размер массива после объявления его. – olidev

Смежные вопросы