problem with vector iterators

A

agenevera

I am trying to insert a vector into a larger vector at various
positions. This, however, will not compile.
vector<double>::iterator pos;
vector<double> tmp;
vector<double> m_parameters;
vector<double> param_start; //vector of start positions in
m_parameters
for (int i=0; i<7; i++)
{
m_parameters.insert(pos[param_start],tmp.begin(),tmp.end());
}
And, then assigning the smaller vectors from the larger one, also
doesn't work.
for (int i=0; i<7; i++)
{
tmp.assign(m_parameters.begin() +
param_start,m_parameters.begin()+param_start[i+1]));
}
Am I missing something here? Vector iterators seem to be problematic.
Thanks a bunch!
 
V

Victor Bazarov

agenevera said:
I am trying to insert a vector into a larger vector at various
positions. This, however, will not compile.
vector<double>::iterator pos;
vector<double> tmp;
vector<double> m_parameters;
vector<double> param_start; //vector of start positions in
m_parameters

If it's a vector of positions, shouldn't it be

vector<size_t>
or
vector<int>

at least?
for (int i=0; i<7; i++)
{
m_parameters.insert(pos[param_start],tmp.begin(),tmp.end());
}
And, then assigning the smaller vectors from the larger one, also
doesn't work.
for (int i=0; i<7; i++)
{
tmp.assign(m_parameters.begin() +
param_start,m_parameters.begin()+param_start[i+1]));
}
Am I missing something here? Vector iterators seem to be problematic.


I think you've completely missed the point of the iterators. What book on
C++ are you reading that doesn't explain iterators?

V
 
D

Daniel T.

"agenevera said:
I am trying to insert a vector into a larger vector at various
positions. This, however, will not compile.
vector<double>::iterator pos;
vector<double> tmp;
vector<double> m_parameters;
vector<double> param_start; //vector of start positions in
m_parameters
for (int i=0; i<7; i++)
{
m_parameters.insert(pos[param_start],tmp.begin(),tmp.end());


pos[param_start] is not an iterator. Try this instead:

pos = m_parameters.begin() + param_start;
m_parameters.insert( pos, tmp.begin(), tmp.end() );

You did it right below...
}
And, then assigning the smaller vectors from the larger one, also
doesn't work.
for (int i=0; i<7; i++)
{
tmp.assign(m_parameters.begin() +
param_start,m_parameters.begin()+param_start[i+1]));


The above doesn't work for me because I have an old compiler, you may
have the same problem? I had to do:

pos = m_parameters.begin();
tmp.assign( pos + param_start, pos + param_start[i + 1] );
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,598
Members
45,147
Latest member
CarenSchni
Top