memcpy или memmove между различными массивами

Я читал некоторую информацию о memcpy и memmove, и если я не ошибаюсь, вы можете использовать оба для перемещения памяти между различными массивами.

Итак, вот мой вопрос: если я хочу объединить эти объекты с помощью этого метода.

class List
{
// Pointer to the beginning.
int* vector;

// Number of elements, n >= 0
int n;

// Capacity for new elements.
int capacity;
}

void concatenateList(List* listToConcatenate)
{
memmove(this->vector + n, listToConcatenate->vector, (listToConcatenate->n)*sizeof(int));
}

Итак, из "listToConcatenate->vector" это начало, мы скопируем все элементы с него "(listToConcatenate->n)*sizeof(int))"и мы поместим его в конец другого массива "this->vector + n",

Разве это не должно быть правильно list2.listToConcatenate(&list1);? Предполагая, конечно, мы получили достаточно места.

Если это не так, каков будет правильный способ сделать это? Можно ли это сделать с помощью memcpy?

Спасибо.

редактироватьЯ думаю, что мне нужно добавить, что это не работает в моей программе. Он не падает, но кажется, что ничего не делает.

0

Решение

Хорошо, я нашел свою ошибку.

Да, вы можете сделать это с memmove, но я что-то пропустил:

void concatenateList(List* listToConcatenate)
{
memmove(this->vector + n, listToConcatenate->vector, (listToConcatenate->n)*sizeof(int));
this->n += listToConcatenate->n; //Mistake here.
};

Вот почему он ничего не печатал. Но да, теперь я немного прояснил ситуацию. Спасибо всем за ваши ответы.

2

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

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

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