This is actually a really obvious "issue" but I found that some developers (usually the inexperienced ones) simply don't think about this horrible source of bugs:). Now let's see the problem: If you run the code snipped above you will see an output similar to:
The value of our int is: 1 The value of our int is: -572662307The explanation for this is simple. If you think that is a great idea to hold pointers to vector elements, you are wrong. The vector is basically a resizable array and the actual resize operation is:
- Create a new and bigger array.
- Copy all content from the current array to the newly allocated array.
- Delete the current array and replace it with the newly created array.