Подтвердить что ты не робот

Как изменить размер массива на С++?

Мне нужно сделать эквивалент следующего кода С# в C++

Array.Resize(ref A, A.Length - 1);

Как этого добиться в C++?

4b9b3361

Ответ 1

Размер массива статический в С++. Вы не можете динамически изменять его размер. Это что std::vector для:

std::vector<int> v; // size of the vector starts at 0

v.push_back(10); // v now has 1 element
v.push_back(20); // v now has 2 elements
v.push_back(30); // v now has 3 elements

v.pop_back(); // removes the 30 and resizes v to 2

v.resize(v.size() - 1); // resizes v to 1

Ответ 2

Вы не можете изменять размер массива, вы можете выделить только один (с большим размером) и скопировать содержимое старого массива. Если вы не хотите использовать std::vector (по какой-то причине), вот код:

int size = 10;
int* arr = new int[size];

void resize() {
    size_t newSize = size * 2;
    int* newArr = new int[newSize];

    memcpy( newArr, arr, size * sizeof(int) );

    size = newSize;
    delete [] arr;
    arr = newArr;
}

код отсюда http://www.cplusplus.com/forum/general/11111/.

Ответ 3

  • Используйте std::vector или
  • Напишите свой собственный метод. Выделите кусок памяти с помощью нового. с этой памятью вы можете расширить до предела объема памяти.

Ответ 4

Необработанные массивы не изменяются в С++.

Вы должны использовать что-то вроде Vector, что позволяет изменять размер.

std::vector позволяет изменять его размер, а также динамическое изменение размера при добавлении элементов (часто делая ненужным добавление вручную для добавления).

Ответ 5

Вы не можете этого сделать, см. этот вопрос. Вместо этого вы можете использовать std: vector.