§ 14. Преобразование элементов массива
14.5. Удаление элемента из массива
Для удаления массива из элемента, стоящего на месте k, нужно сдвинуть на одну позицию влево все элементы, стоящие после него. Количество элементов при этом уменьшается на 1. Эти действия реализованы в функции erase, которая принадлежит классу vector. Доступны два варианта вызова этой функции:
Параметрами функции erase являются итераторы. Если нужно удалить, например пятый элемент, то параметр функции может быть записан так: a.begin() + 5. Пример 14.7. Задан одномерный массив целых чисел. Удалить из него все числа кратные 5. Сколько чисел удалили? Этапы выполнения задания I. Исходные данные: одномерный массив а, количество элементов n. II. Результат: преобразованный массив a и количество удаленных чисел k. III. Алгоритм решения задачи. 1. Ввод исходных данных. IV. Описание переменных: n, k – int, а – vector <int>. Поскольку элементы при удалении сдвигаются влево, обходить массив можно с конца (пример 14.8). |
Пример 14.7. V. Программа:
VI. Тестирование. VII. Анализ результатов. Элементы 5, 15, 35, 10 и 30 кратны 5, поэтому их удалили из массива. Элементы 3 и 4 не кратны 5, поэтому они остались в массиве и сдвинулись в начало. Пример 14.8. Фрагмент программы:
Счетчик k можно не использовать, количество удаленных элементов можно найти как разность между начальным количеством элементов n и длиной вектора после удаления элементов: n – a.size(). |