Поделиться через


удалить

Удаляет заданное значение из заданного диапазона, не нарушая порядок оставшихся элементов и возвращение конец нового диапазона свободного указанного значения.

template<class ForwardIterator, class Type>
   ForwardIterator remove(
      ForwardIterator _First, 
      ForwardIterator _Last, 
      const Type& _Val
   );

Параметры

  • _First
    Передний адресации позиция итератора первого элемента в диапазоне от, какие элементы удалить.

  • _Last
    Позиция одного итератора передний адресации, final элементом в диапазоне от, какие элементы удалить.

  • _Val
    Значение, которое необходимо удалить из диапазона.

Возвращаемое значение

Передний адресации новая конечная позиция итератора измененного диапазона, final одно за элементом последовательности обмылка свободной указанного значения.

Заметки

Ссылочное диапазон должен быть допустимым; все указатели должны быть dereferenceable и в последовательности последняя позиция доступен из первого инкрементацией.

Порядок не удаленных элементов остается стабилизированным.

operator==, используемое для определения равенства между элементами необходимо наложить equivalence связь между ее операндами.

Сложность линейная. (_Last – _First) сравнения на равенство.

Класс список имеет более эффективную версию функции-члена remove, которая также relinks указатели.

Пример

// alg_remove.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <iostream>

int main( ) {
   using namespace std;
   vector <int> v1;
   vector <int>::iterator Iter1, Iter2, new_end;

   int i;
   for ( i = 0 ; i <= 9 ; i++ )
      v1.push_back( i );

   int ii;
   for ( ii = 0 ; ii <= 3 ; ii++ )
      v1.push_back( 7 );
   
   random_shuffle ( v1.begin( ), v1.end( ) );
   cout << "Vector v1 is ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // Remove elements with a value of 7
   new_end = remove ( v1.begin( ), v1.end( ), 7 );

   cout << "Vector v1 with value 7 removed is ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // To change the sequence size, use erase
   v1.erase (new_end, v1.end( ) );

   cout << "Vector v1 resized with value 7 removed is ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;
}

Пример результатов выполнения

Vector v1 is ( 7 1 9 2 0 7 7 3 4 6 8 5 7 7 ).
Vector v1 with value 7 removed is ( 1 9 2 0 3 4 6 8 5 6 8 5 7 7 ).
Vector v1 resized with value 7 removed is ( 1 9 2 0 3 4 6 8 5 ).

Требования

заголовок: <algorithm>

std пространство имен:

См. также

Ссылки

remove (STL Samples)

Стандартная библиотека шаблонов