Массив используется для хранения нескольких данных, и количество элементов массива не может быть изменено во время выполнения. Эту проблему можно решить, используя вектор, который работает как динамический массив. В классе вектора существуют различные функции для добавления и удаления элемента из вектора. Функция erase () используется для удаления одного или нескольких элементов из вектора во время выполнения, что уменьшает размер вектора. Использование этой функции было объяснено в этом руководстве.
Синтаксис:
Ниже приведены два типа синтаксиса этой функции.
итератор стереть(позиция итератора);
Вышеупомянутая функция erase () используется для удаления одного элемента из вектора, она возвращает итератор и указывает на элемент, за которым следует последний удаленный элемент.
итератор стереть(начальная_позиция итератора, конечная_позиция итератора);
Вышеупомянутая функция erase () используется для удаления нескольких элементов из вектора на основе позиции, указанной в первом и втором аргументах этой функции.
Предварительные условия:
Прежде чем проверять примеры этого руководства, вы должны проверить, установлен ли компилятор g ++ в системе. Если вы используете Visual Studio Code, установите необходимые расширения для компиляции исходного кода C ++ и создания исполняемого кода. Здесь приложение Visual Studio Code было использовано для компиляции и выполнения кода C ++. Ниже показаны различные варианты использования функции erase () для вставки элемента (ов) в вектор.
Пример-1: удалить первый элемент element
Создайте файл C ++ со следующим кодом, чтобы удалить элемент из начала вектора. В коде использован вектор строковых значений. Значения вектора были напечатаны до и после удаления первого элемента из вектора с помощью функции erase () с одним параметром.
// Включаем необходимые библиотеки#включают
#включают
с использованием пространство именчасы;
// Отображаем значения вектора
пустотаdisplay_vector(вектор<нить>фрукты)
{
// Инициализируем счетчик
intприлавокзнак равно 1;
// Итерировать и распечатать элементы вектора с помощью цикла
для (автоонзнак равнофрукты.начинать();он!знак равнофрукты.конец();он++)
{
// Проверяем элементы, последний элемент или нет
если(прилавок!знак равнофрукты.размер())
Стоимость << *он<< ',';
еще
Стоимость << *он;
// Увеличиваем счетчик на 1
прилавок++;
}
Стоимость <<конец;
}
intглавный(пустота) {
// Объявление вектора строковых данных
вектор<нить>фруктызнак равно { 'Апельсин','Банан','Манго','Джек Фрут','Личи' };
// Распечатываем существующие значения вектора
Стоимость << 'Значения вектора перед удалением:' <<конец;
display_vector(фрукты);
// Удаляем первый элемент из вектора
фрукты.стереть(фрукты.начинать());
// Распечатываем существующие значения вектора после удаления
Стоимость << ' пЗначения вектора после удаления: ' <<конец;
display_vector(фрукты);
возвращение 0;
}
Выход:
Следующий вывод появится после выполнения вышеуказанного кода.
Пример-2: удалить несколько элементов
Создайте файл C ++ со следующим кодом, чтобы удалить несколько элементов из вектора с помощью функции erase (). В коде использован вектор целочисленных значений. Здесь используются два итератора для установки диапазона элементов, удаленных из вектора. Функция erase () использовалась с двумя параметрами для удаления нескольких элементов из вектора.
// Включаем необходимые библиотеки#включают
#включают
с использованием пространство именчасы;
// Отображаем вектор
пустотаdisplay_vector(вектор<int>числа)
{
// Распечатываем значения вектора с помощью цикла
для(автоонзнак равночисла.начинать();он!знак равночисла.конец() ;он++)
Стоимость << *он<< '';
// Добавляем новую строку
Стоимость << ' п';
}
intглавный() {
// Объявление вектора целочисленных данных
вектор<int>intArray{ 678,435,960,231,800,387,634,267,409,294};
// Распечатываем существующие значения вектора
Стоимость << 'Значения вектора перед удалением:' <<конец;
display_vector(intArray);
// Объявляем два итератора для удаления диапазона элементов из вектора
вектор<int> :: итераторstartEle, endEle;
// Устанавливаем итератор в первую позицию
startEleзнак равноintArray.начинать();
// Увеличиваем начальный итератор на 2
продвигать(startEle,2);
// Устанавливаем итератор в последнюю позицию
endEleзнак равноintArray.конец();
// Уменьшаем конечный итератор на 3
продвигать(endEle,-3);
// Удаляем диапазон элементов
intArray.стереть(startEle, endEle);
// Распечатываем существующие значения вектора после удаления
Стоимость << ' пЗначения вектора после удаления: ' <<конец;
display_vector(intArray);
возвращение 0;
}
Выход:
Следующий вывод появится после выполнения вышеуказанного кода. В соответствии с диапазоном итераторов удалены элементы с 3-й по 7-ю позицию вектора.
Пример-3: Удалить определенные элементы
Создайте файл C ++ со следующим кодом, чтобы удалить определенные элементы вектора с помощью функции erase (). В коде объявлен вектор из 7 целочисленных элементов. Затем цикл «for» использовался для перебора элементов вектора и удаления из вектора тех элементов, которые не делятся на 5.
// Включаем необходимые библиотеки#включают
#включают
с использованием пространство именчасы;
intглавный()
{
// Объявление вектора целочисленных данных
вектор<int>числазнак равно { 78,Четыре пять,67,25,98,75,52 };
Стоимость << 'Значения вектора перед удалением: п';
для (int const &я:числа) {
Стоимость <<я<< '';
}
Стоимость <<конец;
// Удаляем из вектора числа, не делящиеся на 5
для (автоонзнак равночисла.начинать();он!знак равночисла.конец();он++)
{
// Проверяем, делится ли число на 5 или нет
если (*он% 5 !знак равно 0)
{
// Удаляем элемент на основе итератора
числа.стереть(он-);
}
}
Стоимость << 'Значения вектора после удаления: п';
для (int const &я:числа) {
Стоимость <<я<< '';
}
Стоимость <<конец;
возвращение 0;
}
Выход:
Следующий вывод появится после выполнения вышеуказанного кода. Выходные данные показывают, что вектор содержит только элементы, кратные 5, а другие элементы были удалены.
Заключение:
В этом уроке были показаны различные варианты использования функции erase () для удаления векторных элементов. В C ++ есть много других функций для удаления элемента из вектора, и эти функции могут удалять по одному элементу за раз. Но как одиночные, так и множественные элементы из любой позиции вектора могут быть удалены с помощью функции vector erase ().