Re: Vector reserve in a for_each
* Chris Roth:
I have a vector of vectors:
vector< vector<double> > v;
and have initialized it with:
v( 5 );
as I know I will have 5 columns of data. At this point, I read text file
data into each of the the vectors using push_back. I know that I will be
reading in 5000 elements into each vector, so I use reserve:
ifstream f( "file.txt" );
if(f.is_open())
{
for( vector< vector<double> >::iterator itr = v.begin();
itr != v.end(); ++itr )
{
itr->reserve(5000);
}
double d;
while(f >> d)
{
m_data[0].push_back( d );
f >> d;
m_data[1].push_back( d );
f >> d;
m_data[2].push_back( d );
f >> d;
m_data[3].push_back( d );
f >> d;
m_data[4].push_back( d );
}
}
However, could I use a for_each to set the reserve of the vectors?
You could, but a loop is much cleaner.
However, I'd use an indexing loop, not an iterator-based loop.
Like
for( size_t i = 0; i < v.size(); ++i ) { v.at(i).reserve( 5000 ); }
Or is
there a different/better way to read in the 5 column text data?
Sure: define "better".
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?