954,492 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Erasing element from a vector

I have a vector I need to delete every third element
123456
12456
1245
125
15
1

vector<int>::iterator iter = v.begin();
    while( iter != v.end() )
	
	for( int i = 0; i < v.size() +2 ; i++ )
    while( iter != v.end() )
    {
      if (v.size() != 1 ) )
        iter = v.erase( iter );
      else
        ++iter;
    }
 
    copy(v.begin(), v.end(), ostream_iterator<int>(cout, ""));


any suggestion it only gives the first two elements. Thanks in advance!

karlad
Newbie Poster
2 posts since May 2009
Reputation Points: 10
Solved Threads: 0
 

Can't grok this mysterious code...
Keep it simple:

while (it != v.end()) {
        if (++it != v.end() && ++it != v.end())
            it = v.erase(it);
    }
ArkM
Postaholic
2,001 posts since Jul 2008
Reputation Points: 1,234
Solved Threads: 348
 
//declare and initialize variables
iterator current = vector.begin
iterator stop = vector.end 
int n = 0;

//loop de loop
while(size of vector not equal one)
{
    ++n;
    ++current;

    if(current equals stop) //reset current to beginning of vector
         current = vector.begin
    
     if n equals 3
     {
         erase current 

         //reset variables
         stop = vector.end
         n = 0
     }
}
Lerner
Nearly a Posting Maven
2,382 posts since Jul 2005
Reputation Points: 739
Solved Threads: 396
 

it's not working the code still gives two values

karlad
Newbie Poster
2 posts since May 2009
Reputation Points: 10
Solved Threads: 0
 

It works fine.
Try to print vector with regular for loop:

for (size_t i = 0; i < v.size(); i++)
    cout << v[i] << '\n';

and see what happens.

ArkM
Postaholic
2,001 posts since Jul 2008
Reputation Points: 1,234
Solved Threads: 348
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You