Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   vector of class (http://www.velocityreviews.com/forums/t623073-vector-of-class.html)

xyz 06-30-2008 04:34 PM

vector of class
 
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
thank you for any help

Daniel T. 06-30-2008 05:39 PM

Re: vector of class
 
On Jun 30, 12:34*pm, 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 help


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.


All times are GMT. The time now is 08:43 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.