Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln innehåller information om hur du använder list::removeSTL-funktionerna list::remove_if i Visual C++.
Ursprunglig produktversion: Visual C++
Ursprungligt KB-nummer: 168047
Sammanfattning
Exempelkoden nedan visar hur du använder list::remove, list::remove_if STL-funktioner i Visual C++.
Kommentar
Det finns vissa skillnader i implementeringen av Standard C++-bibliotekskomponenterna i Visual C++ version 4.2 jämfört med senare revisioner. De relevanta kodavsnitten nedan kompileras villkorligt baserat på värdet _MSC_VERför .
Obligatoriskt huvud
<list>
<string>
<iostream>
Prototyp
void remove(const T& x);
void remove_if(binder2nd< not_equal_to<T> > pr);
Kommentar
Klass-/parameternamnen i prototypen kanske inte matchar versionen i huvudfilen. Vissa har ändrats för att förbättra läsbarheten.
Beskrivning
Det här exemplet visar hur du använder list::remove och list::remove_if. Den visar också hur du använder list::remove_if med din egen funktion.
Exempelkod
//////////////////////////////////////////////////////////////////////
// Compile options needed: -GX
// remove.cpp : This example shows how to use list::remove and
// list::remove_if. It also shows how to use
// list::remove_if with your own function.
// Functions:
// list::remove
// list::remove_if
// Copyright (c) 1996 Microsoft Corporation. All rights reserved.
//////////////////////////////////////////////////////////////////////
#pragma warning(disable:4786) // disable spurious C4786 warnings
#include <list>
#include <string>
#include <iostream>
using namespace std;
#if _MSC_VER > 1020 // if later than revision 4.2
using namespace std; // std c++ libs are implemented in std
#endif
typedef list<string, allocator<string> > LISTSTR;
// Used to customize list::remove_if()
class is_four_chars
: public not_equal_to<string>
{
bool operator()(const string& rhs, const string&) const
{ return rhs.size() == 4; }
};
void main()
{
LISTSTR test;
LISTSTR::iterator i;
test.push_back("good");
test.push_back("bad");
test.push_back("ugly");
// good bad ugly
for (i = test.begin(); i != test.end(); ++i)
cout << *i << " ";
cout << endl;
test.remove("bad");
// good ugly
for (i = test.begin(); i != test.end(); ++i)
cout << *i << " ";
cout << endl;
// remove any not equal to "good"
test.remove_if(binder2nd<not_equal_to<string> >
(not_equal_to<string>(), "good"));
// good
for (i = test.begin(); i != test.end(); ++i)
cout << *i << " ";
cout << endl;
// Remove any strings that are four characters long
test.remove_if(binder2nd<not_equal_to<string> >
(is_four_chars(), "useless parameter"));
if (test.empty())
cout << "Empty list\n";
}
Programmets utdata
good bad ugly
good ugly
good
Empty list
Referenser
Mer information om list::remove och list::remove_iffinns på följande webbplatser: