PDA

View Full Version : problem with vector of vectors

mickey
14th February 2007, 10:41
//my vector is: 700 vectors of 11 vectors of double
vector < vector <double> > example;
//fill example.........
vector < vector <double> >* _set = &example;

vector < vector <double> >::iterator iit = _set->begin();
cout << " iit size " << iit->size()<< endl; //print 11; but i need 700......how?

for (; iit != _set->end(); ++iit) {
cout << (*iit) << endl;
(_set)->erase( (iit) );//doesn't work

I can't use this vector....I need to erase the first element (0) from the head of each 700 vectors. How can I do?

14th February 2007, 11:56
//my vector is: 700 vectors of 11 vectors of double
vector < vector <double> > example;
Are you sure? For me your vector is: 700 vectors of 11 doubles

//fill example.........
vector < vector <double> >* _set = &example;
vector < vector <double> >::iterator iit = _set->begin();
cout << " iit size " << iit->size()<< endl; //print 11; but i need 700......how?
iit is an iterator that points to the first element of you vector, so it points to vector of 11 doubles. That's why it prints 11. Use _set->size() and you'll get 700.

for (; iit != _set->end(); ++iit) {
cout << (*iit) << endl;
(_set)->erase( (iit) );//doesn't work
Here you're iterating through your vector (700 elements) and remove each element, so you probably end up with empty vector. Use sth like this:

for (; iit != _set->end(); ++iit) {
cout << (*iit) << endl;
iit->erase(iit->begin());
}

and you should get vector which is: 700 vectors of 10 doubles.

mickey
14th February 2007, 12:44
vector < vector <double> > example;
vector <double> line;
line.push_back(......) // 11 times
example.push_back(line); //700 times

hi,
yours work! But I'm confused; Of course I wrote not right. But I think example is 1 vector of 700 vectors of double; why 700 vectors of double ?
If I'm not doing a wrong how can I delete the first element of example ? (that's a vector of double)..
thanks

14th February 2007, 13:01
But I think example is 1 vector of 700 vectors of double; why 700 vectors of double ?

When I've written "your vector is: 700 vectors of 11 doubles" I've meant "it contains", so it's actually the same you've written above: 1 vector of 700 vectors...

If I'm not doing a wrong how can I delete the first element of example ? (that's a vector of double)..

example.erase(example.begin());
// or
example.pop_front();

mickey
14th February 2007, 13:08
Thank you, but is there a way to use only iterator? (eg. it is an iterator of example)

exampe.erase (it.begin(); //or what?

and then: what happen to the memory? It'll have a blank space where it was the vector deleted?

Methedrine
14th February 2007, 13:23