I want to iteratively use insert
to modify the first element in a vector<int>
(I know that with vector it's better to insert element in the back, I was just playing).
int main() {
vector<int> v1 = {1,2,2,2,2};
auto itr = v1.begin();
print_vector(v1);
cout<<*itr<<endl; // ok, itr is pointing to first element
v1.insert(itr,3);
cout<<*itr<<endl; // after inserting 3 itr is still pointing to 1
print_vector(v1);
cout<<*itr<<endl; // but now itr is pointing to 3
v1.insert(itr,7);
print_vector(v1);
cout<<*itr<<endl;
return 0;
}
v[]: 1 2 2 2 2
1
1
v[]: 3 1 2 2 2 2
3
v[]: 131072 3 1 2 2 2 2Process finished with exit code 0
So my problem here are mainly 2:
- After
v1.insert(itr,3)
,itr
is still pointing to1
. After the call ofprint_vector()
nowitr
is pointing to3
. Why? - Ok now
itr
its pointing to3
(the first element ofv1
). I callv1.insert(itr,7)
but instead of placing 7 as the first element, it place131072
. Again, why?
The print_vector
function I have implemented is the following:
void print_vector(vector<int> v){
cout<<"v[]: ";
for(int i:v){
cout<<i<<" ";
}
cout<<endl;
}