§ 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(). |
