std:: string::erase
Erases part of the string, reducing its length:
(1) sequence Erases the portion of the string value that begins at the character position pos and spans len characters (or until the end of the string, if either the content is too short or if len is string::npos.
Notice that the default argument erases all characters in the string (like member function clear).
(2) character Erases the character pointed by p.
(3) range Erases the sequence of characters in the range [first,last).
Parameters
pos Position of the first character to be erased.
If this is greater than the string length, it throws out_of_range.
Note: The first character in str is denoted by a value of 0 (not 1).
len Number of characters to erase (if the string is shorter, as many characters as possible are erased).
A value of string::npos indicates all characters until the end of the string. p Iterator to the character to be removed. first, last Iterators specifying a range within the string] to be removed: [first,last). i.e., the range includes all the characters between first and last, including the character pointed by first but not the one pointed by last.
size_t is an unsigned integral type (the same as member type string::size_type ).
Member types iterator and const_iterator are random access iterator types that point to characters of the string.
Return value
The sequence version (1) returns *this.
The others return an iterator referring to the character that now occupies the position of the first character erased, or string::end if no such character exists.
Member type iterator is a random access iterator type that points to characters of the string.
Example
Complexity
Iterator validity
Data races
Exception safety
Strong guarantee: if an exception is thrown, there are no changes in the string.
If pos is greater than the string length, an out_of_range exception is thrown.
An invalid p in (2), or an invalid range in (3), causes undefined behavior.
For (1) and (3), if an exception is thrown, there are no changes in the string (strong guarantee).
For (2), it never throws exceptions (no-throw guarantee).
If pos is greater than the string length, an out_of_range exception is thrown.
Русские Блоги
Подробное объяснение функции erase () строкового типа в C ++
Строка стандартного библиотечного типа представляет собой последовательность символов переменной длины. Вы можете удалить последовательность символов с помощью функции erase () класса строки. Функция erase () имеет три формата, которые используются для удаления символа в указанной позиции, удаления строки указанной длины и удаления строки указанного диапазона.
1 Удалить символ в указанной позиции
Функция erase () используется для удаления символов в указанной позиции. Формат:
Среди них итератор параметров является итератором, то есть удаляет символ, на который указывает итератор p. Возвращаемое значение — удаленная строка.
2 Удалить строку указанной длины
Функция erase () используется для удаления строки указанной длины. Формат:
Среди них параметр pos представляет начальную позицию удаляемой строки, а его значение по умолчанию — 0; len представляет длину удаляемой строки, а его значение по умолчанию — string :: npos. Возвращаемое значение — удаленная строка.
Ссылки по теме:
string :: npos — статический постоянный член строкового типа, представляющий максимальное значение типа size_t. При использовании для представления длины строки он фактически определяет длину объекта строкового типа. Следовательно, для второго формата функции erase () значение параметра по умолчанию состоит в том, чтобы удалить все содержимое в строке.
3 Удалить указанный диапазон строк
Формат функции erase (), используемой для удаления указанного диапазона строк:
Среди них первый и последний соответственно представляют начало и конец диапазона. Следует отметить, что диапазон включает в себя первый, но не последний, то есть диапазон [первый, последний). Возвращаемое значение функции erase () — удаленная строка.
4 Связанный код
str — это переменная строкового типа.Сначала вызывается функция erase () для удаления строки указанной длины в str, то есть строки длиной 8, начиная с 10-й позиции. Следует отметить, что начальная позиция str начинается с 0. Удаленная строка становится "Это предложение". Затем вызывается функция erase () для удаления символа в указанной позиции, str.begin () — это итератор для получения начальной позиции str, удаление str.begin () + 9 итераций. Символ, соответствующий устройству, — это символ «n». В это время значение str становится «Это предложение». Наконец, вызовите функцию erase (), чтобы удалить указанный диапазон строк. Наконец, значение str становится «Это предложение».
Интеллектуальная рекомендация
Меч относится к предложению + 43: количество N сиша + Java
Оригинальное название: бросить кубики на землю, все точки кости сталкиваются с точкой точки кости. Введите n, напечатали вероятность всех возможных значений. (6 сторон каждой кости, точки от 1 до 6) Р.
Введение в Python 4
функция ввода Использование функции Функция input () является функцией ввода. Функция input () — это функция ввода. Когда вы пишете вопрос в скобках функции, функция input () будет отображать вопрос в.
Основные операции в R 01
Повторите основную операцию секретной книги ниндзя языка R учителя Се Иихуэй.
Мастерство, создание американской легенды очистки воды
Мастера — это не только технические специалисты и квалифицированные мастера, которые могут решить некоторые практические проблемы в производстве и жизни, но также авангарды, которые могут руководить п.
курсы памяти Лу Feifei (а, понимать память понимания мозга)
Понимание памяти, что память? Понимание памяти, что память? 1 Понимание мозга 2 Что такое память Функция 3 Память 3.1 общие воспоминания путь 3.2 Факторы, влияющие на память 4 запоминающий материал Че.
std::list<T,Allocator>::erase
Ссылки и итераторы на стертые элементы недействительны.Другие ссылки и итераторы не затрагиваются.
Итератор pos должен быть действительным и разыменованным. Таким образом, итератор end() (который действителен, но не может быть разыменован) не может использоваться в качестве значения для pos .
Итератор first не должен быть разыменованным, если first==last : стирание пустого диапазона не допускается.
Parameters
| pos | — | итератор к элементу для удаления |
| first, last | — | диапазон элементов для удаления |
Return value
Итератор,следующий за последним удаленным элементом.
Если pos ссылается на последний элемент, то возвращается итератор end() .
Если перед удалением last==end() возвращается обновленный итератор end() .
Функция Vector Erase () в C++

Программирование и разработка
Массив используется для хранения нескольких данных, и количество элементов массива не может быть изменено во время выполнения. Эту проблему можно решить, используя вектор, который работает как динамический массив. В классе вектора существуют различные функции для добавления и удаления элемента из вектора. Функция erase () используется для удаления одного или нескольких элементов из вектора во время выполнения, что уменьшает размер вектора. Использование этой функции было объяснено в этом руководстве.
Синтаксис:
Ниже приведены два типа синтаксиса этой функции.
Вышеупомянутая функция erase () используется для удаления одного элемента из вектора, она возвращает итератор и указывает на элемент, за которым следует последний удаленный элемент.
Вышеупомянутая функция erase () используется для удаления нескольких элементов из вектора на основе позиции, указанной в первом и втором аргументах этой функции.
Предварительные условия:
Прежде чем проверять примеры этого руководства, вы должны проверить, установлен ли компилятор g ++ в системе. Если вы используете Visual Studio Code, установите необходимые расширения для компиляции исходного кода C ++ и создания исполняемого кода. Здесь приложение Visual Studio Code было использовано для компиляции и выполнения кода C ++. Ниже показаны различные варианты использования функции erase () для вставки элемента (ов) в вектор.
Пример 1: удалить первый элемент element
Создайте файл C ++ со следующим кодом, чтобы удалить элемент из начала вектора. В коде использован вектор строковых значений. Значения вектора были напечатаны до и после удаления первого элемента из вектора с помощью функции erase () с одним параметром.
//Include necessary libraries
#include <iostream>
#include <vector>
using namespace std ;
//Display the values of the vector
void display_vector ( vector < string > fruits )
<
//Initialize the counter
int counter = 1 ;
//Iterate and print the elements of the vector using loop
for ( auto ele = fruits. begin ( ) ; ele ! = fruits. end ( ) ; ele ++ )
<
//Check the elements is the last element or not
if ( counter ! = fruits. size ( ) )
cout << * ele << «, « ;
else
cout << * ele ;
//Increment the counter by 1
counter ++ ;
>
cout << endl ;
>
int main ( void ) <
//Declare a vector of string data
vector < string > fruits = < «Orange» , «Banana» , «Mango» , «Jack Fruit» , «Lichi» >;
//Print the existing values of the vector
cout << «The values of the vector before remove: « << endl ;
display_vector ( fruits ) ;
//Remove the first element from the vector
fruits. erase ( fruits. begin ( ) ) ;
//Print the existing values of the vector after remove
cout << « \n The values of the vector after remove: « << endl ;
display_vector ( fruits ) ;
return 0 ;
>
Следующий вывод появится после выполнения вышеуказанного кода.

Пример 2: Удалить несколько элементов
Создайте файл C ++ со следующим кодом, чтобы удалить несколько элементов из вектора с помощью функции erase (). В коде использован вектор целочисленных значений. Здесь используются два итератора для установки диапазона элементов, удаленных из вектора. Функция erase () использовалась с двумя параметрами для удаления нескольких элементов из вектора.
//Include necessary libraries
#include <vector>
#include <iostream>
using namespace std ;
//Display the vector
void display_vector ( vector < int > nums )
<
//Print the values of the vector using loop
for ( auto ele = nums. begin ( ) ; ele ! = nums. end ( ) ; ele ++ )
cout << * ele << » « ;
//Add new line
cout << « \n « ;
>
int main ( ) <
//Declare a vector of integer data
vector < int > intArray < 678 , 435 , 960 , 231 , 800 , 387 , 634 , 267 , 409 , 294 >;
//Print the existing values of the vector
cout << «The values of the vector before remove: « << endl ;
display_vector ( intArray ) ;
//Declare two iterators to remove the range of elements from the vector
vector < int > :: iterator startEle, endEle ;
//Set the iterator to the first position
startEle = intArray. begin ( ) ;
//Increment the starting iterator by 2
advance ( startEle, 2 ) ;
//Set the iterator to the last position
endEle = intArray. end ( ) ;
//Decrement the ending iterator by 3
advance ( endEle, — 3 ) ;
//Remove the range of elements
intArray. erase ( startEle, endEle ) ;
//Print the existing values of the vector after remove
cout << « \n The values of the vector after remove: « << endl ;
display_vector ( intArray ) ;
return 0 ;
>
Следующий вывод появится после выполнения вышеуказанного кода. В соответствии с диапазоном итераторов удалены элементы с 3-й по 7-ю позицию вектора.

Пример 3: Удалить определенные элементы
Создайте файл C ++ со следующим кодом, чтобы удалить определенные элементы вектора с помощью функции erase (). В коде объявлен вектор из 7 целочисленных элементов. Затем цикл for использовался для перебора элементов вектора и удаления из вектора тех элементов, которые не делятся на 5.
//Include necessary libraries
#include <iostream>
#include <vector>
using namespace std ;
int main ( )
<
//Declare a vector of integer data
vector < int > numbers = < 78 , 45 , 67 , 25 , 98 , 75 , 52 >;
cout << «The values of the vector before remove: \n « ;
for ( int const & i : numbers ) <
cout << i << ‘ ‘ ;
>
cout << endl ;
//Remove the numbers from the vector those are not divisible by 5
for ( auto ele = numbers. begin ( ) ; ele ! = numbers. end ( ) ; ele ++ )
<
//Check the number is divisible by 5 or not
if ( * ele % 5 ! = 0 )
<
//Remove the element based on the iterator
numbers. erase ( ele — ) ;
>
>
cout << «The values of the vector after remove: \n « ;
for ( int const & i : numbers ) <
cout << i << ‘ ‘ ;
>
cout << endl ;
return 0 ;
>
Следующий вывод появится после выполнения вышеуказанного кода. Выходные данные показывают, что вектор содержит только элементы, кратные 5, а другие элементы были удалены.

Заключение
В этом уроке были показаны различные варианты использования функции erase () для удаления векторных элементов. В C ++ есть много других функций для удаления элемента из вектора, и эти функции могут удалять по одному элементу за раз. Но как одиночные, так и множественные элементы из любой позиции вектора могут быть удалены с помощью функции vector erase ().