Discussion: vector of class
Afficher un message
Vieux 30/06/2008, 19h39   #2
Daniel T.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: vector of class

On Jun 30, 12:34pm, xyz <lavanyaredd...@gmail.com> wrote:

> i have a vector of certain class which has certain parameters
> xxx is my class
> and here is my vector
> std::vector<xxx > yyy;
>
> in my vector i have the data as below:
> 12 abcde 34567 asdf 1
> 13 fjggkf 2343 fkjhk 3
> 12 fgfgfh 33434 fgh 2
> 34 dgdg 5454 fgfdg 2
> ....
> now i want to iterate through my vector inorder i have to delete 2nd
> line in my vector
> here is my iterator which goes through all elements of my vector
>
> std::vector<xxx >::iterator iter;
>
> i could able to do with the integer vector but i have problem with the
> vector of certain class


You do it the same way.

> thank you for any


Use the erase-remove idiom. If your class defines an operator== that
can compare two of them for equivelance, then simply:

yyy.erase(remove(yyy.begin(), yyy.end()), yyy.end());

If your class doesn't have an op==, then you will have to define a
predicate that returns true for the value(s) that needs to be removed
and use the remove_if algorithm:

bool mypred(const xxx& left, const xxx& right);
// returns true is left is like right.

yyy.erase(remove_if(yyy.begin(), yyy.end(), &mypred), yyy.end());

You could also use a function object (functor) for "mypred", possibly
even compose one from the standard ones that exist or using something
like the boost lambda library.
  Réponse avec citation
 
Page generated in 0,05300 seconds with 9 queries