On Jun 30, 12:34*pm, xyz <(EMail Removed)> 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 help
Use the eraseremove 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.
