@pshevnin

Как в vector на си вставлять элемент на конкретное место?

Добрый день. Есть динамический массив реализованный с помощью vector на Си.
int vector_push_back(vector_t *v, const void *item) {
    if (!v || !item) {
        return 0;
    }

    if (v->count == v->capacity) {
        if (!vector_realloc(v, v->capacity * VECTOR_SIZE_MULT)) {
            return 0;
        }
    }

    memcpy((void *)((char *)v->data + (v->count * v->item_size)), item, v->item_size);
    v->count++;

    return 1;
}
Это функция добавления нового элемента. Как сделать так, чтобы я мог вставлять новые элементы на конкретное место массива с помощью индекса? Спасибо
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Сначала через memmove надо сдвинуть элементы с i по count-1 на позиции i+1...count. Потом чуть изменить memcopy, чтобы записать новв элемент на позицию i, а не count.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
СУПЕРТЕЛ Санкт-Петербург
от 165 000 ₽
.White Code Санкт-Петербург
от 150 000 до 250 000 ₽
.White Code Санкт-Петербург
от 350 000 до 400 000 ₽