Я учусь программировать, а C++ - мой первый язык. Не беспокойтесь, используя указатели, чтобы показать мне - я их еще не понимаю и не буду беспокоиться, пока у меня больше свободного времени, чтобы посвятить этому.Можете ли вы изменить размер массива C++ после инициализации?
int mergeSort()
{
const int n = 9;
int originalarray[n] = {1, 3, 5, 7, 9, 2, 4, 6, 8};
const int halfelements = (sizeof(originalarray)/sizeof(int))/2;
int farray[halfelements];
int sarray[halfelements];
for (int i = 0; i < halfelements; i++) {
farray[i] = originalarray[i];
}
for (int i = halfelements, x = 0; i < (halfelements * 2); i++, x++) {
sarray[x] = originalarray[i];
}
Я был назначен (я не беру классы - только обучение с несколькими друзьями помогает мне) алгоритм сортировки слиянием, причем алгоритм объяснил, но не реализация. Я хочу переписать это, чтобы он работал как для нечетных, так и для целых чисел. Я пробовал/а добавить код:
if ((n % 2) != 0) int farray[halfelements + 1];
Для того, чтобы использовать одно и то же целочисленное число для итерации по обоим последующим массивам. Значение sizeof (farray) показывает 16 байтов или 4 целых числа. Так что это не изменение размера. Что я хочу знать - возможно ли изменить размеры массивов после их инициализации?
Редактировать: Как реализовать вектор? Я не понимаю, как использовать итераторы в цикле для повторения и копирования значений.
ОК, спасибо. Я понял, как вы бы ввели std :: vector в этот алгоритм.Хотя мне жаль, что я не потратил два часа на отладку своего кода, просто для того, чтобы выяснить, что мой заголовок функции «int mergeSort (std :: vector, int)» отсутствовал «» =/ –
jkeys
. динамическими массивами в любом случае? Динамическое изменение размера массива или вектора должно приводить к одинаковым штрафам за производительность. Right> – Jason