Как работает erase в c
Перейти к содержимому

Как работает erase в c

  • автор:

Как удалить подстроку из строки методом erase? c++ [закрыт]

Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей. См. Как создать минимальный, самодостаточный и воспроизводимый пример.

Закрыт 2 года назад .

Для заполнения стека нужно ввести «push какое-то число«». Я записываю это в строку, затем пытаюсь удалить из нее подстроку начиная с 0-ого символа по 4-ый символ, чтобы строка содержала только число, которое я позже преобразую к int и благополучно запихаю в стек. Что я делаю не так? Пробовал также str = str.erase (0,3)

#include #include int main() < using namespace std; string str = ""; cin >> str; str.erase(0, 4); cout  

vector::erase в C++ (с примерами)

Здравствуйте! Сегодня мы обсудим часто используемую функцию в C++ для управления элементами в векторе - erase . Начнем с изучения этой функции, узнаем, как правильно ее использовать, и рассмотрим практические примеры. К концу статьи у вас будет твердое понимание этого важного инструмента.

Удаление элементов из вектора в C++

Векторы в C++ — это динамические массивы, которые могут увеличиваться и уменьшаться в размере. Иногда нам нужно удалить элементы из вектора, будь то один элемент или диапазон. Здесь на помощь приходит функция erase .

Функция erase выглядит так:

vector::erase(iterator position); vector::erase(iterator first, iterator last);
  • Функция принимает итераторы первого и последнего удаляемых элементов.
  • Она возвращает итератор, указывающий на следующий элемент после удаленного (или удаленных). Если был удален последний элемент, итератор указывает на конец вектора.

Рассмотрим ее на примере простой программы:

#include #include int main()  std::vectorint> my_vector; // Добавляем значения от 1 до 10 for (int i=1; i10; i++) my_vector.push_back(i); // Удаляем 6-й элемент my_vector.erase(my_vector.begin()+5); // Удаляем первые 3 элемента my_vector.erase(my_vector.begin(),my_vector.begin()+3); std::cout  <"my_vector содержит:"; for (unsigned i=0; imy_vector.size(); ++i) std::cout  <' '  [i]; std::cout  <'\n'; return 0; >

Выходные данные программы:

my_vector содержит: 4 5 7 8 9 10

Когда вы удаляете элемент (или несколько элементов) из вектора:

  1. Размер вектора уменьшается на количество удаленных элементов.
  2. Если вы не удаляете элементы с конца, вектор сдвигает все элементы после удаленных на новые позиции. Это не так быстро, как в некоторых других контейнерах, таких как list или forward_list .

Время выполнения зависит от двух вещей: количества удаляемых элементов и количества элементов после удаляемых. Последние перемещаются на новые позиции.

Будьте осторожны с вашими итераторами! Если они указывают на удаленный элемент или на любой элемент после него, они будут работать не так, как вы ожидаете. Но итераторы до удаленных элементов остаются действительными.

Безопасность и исключения

Используя erase , вы изменяете вектор. Но элементы до удаленных не затрагиваются. Так что безопасно обращаться или изменять их при использовании erase . Если вы ошибочно передаете неправильную позицию или диапазон в erase , результат может быть непредсказуемым, будьте внимательны.

Так же, как функц

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *