Sdílet prostřednictvím


remove

Odstraní zadanou hodnotu z daného rozsahu bez narušení pořadí zbývajících prvků a vrácení konce nového rozsahu, který neobsahuje zadanou hodnotu.

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

Parametry

  • _First
    Iterační dopředu, pomocí adresování pozice prvním elementem v rozsahu, ze kterého budou odebrány elementy.

  • _Last
    Iterační dopředu, pomocí adresování jednu pozici za poslední prvek v rozsahu, ze kterého budou odebrány elementy.

  • _Val
    Hodnota, která má být odebrán z rozsahu.

Vrácená hodnota

Iterační dopředu, pomocí adresování nové pozice konce upravené rozsahu, jeden za poslední prvek volné zadané hodnoty zbývajících pořadí.

Poznámky

Rozsah odkazuje musí být platná. všechny ukazatele musí být dereferenceable a v rámci sekvenci je dostupný od prvního poslední pozice podle incrementation.

Zůstane stabilní pořadí elementů nelze odebrat.

operator== Slouží k určení rovnosti mezi elementy musí ukládat vztahu rovnocennosti mezí jejími operandy.

Složitost je lineární; Existují (_Last – _First) porovnání rovnosti.

Seznam třída obsahuje efektivnější verze funkce člena z odebrat, což také relinks ukazatele.

Příklad

// 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;
}

Vzorový výstup

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

Požadavky

Záhlaví: < algoritmus >

Obor názvů: std

Viz také

Referenční dokumentace

<algorithm>

Standardní knihovna šablon