Puede utilizar filter_iterator
de impulso. Here is an example con la colección subyacente como una matriz ordinaria.
A continuación se muestra un ejemplo de código no probado para que juegue; Tenía que hacer ciertas suposiciones sobre Student
(operator<<
válida para la salida, país expuesto a través de std::string country() const
)
struct checkCountry
{
std::string country;
bool operator()(const Student& x)
{
return (x.country() == country);
}
};
int main()
{
std::vector<Student> studentList;
studentList.push_back(Student("Tom", 'M', "91213242", "America"));
studentList.push_back(Student("Jessilyn", 'F', "98422333", "Europe"));
typedef boost::filter_iterator<checkCountry, std::vector<Student>::iterator> FilterIter;
checkCountry predicate;
predicate.country = "America";
FilterIter filter_iter_first(predicate, studentList.begin(), studentList.end());
FilterIter filter_iter_last(predicate, studentList.end(), studentList.end());
std::copy(filter_iter_first, filter_iter_last, std::ostream_iterator<Student>(std::cout, " "));
}
necesita la [idioma borrar-remove] (http://en.wikipedia.org/wiki/Erase-remove_idiom). –
@Oli: solo si quería eliminar las entradas no americanas. Lo interpreté como que quiere preservar el vector, pero mostrar solo ciertos elementos. –
Tengo que conservar las otras entradas para que borrar-borrar no funcione? – delphi316