I can't find any practical use for this, but I'm still curious as to why I'm getting different results when run in the same statement scope as apposed to different statement scopes?
Variation #1
int num = 3;
vector<int> ivec;
vector<int*> ipvec;
for (int i = 0; i != num; ++i)
{
ivec.push_back(i);
ipvec.push_back(&ivec[i]);
}
for (int i = 0; i != num; ++i)
{
cout << "ivec:\t" << ivec[i] << endl;
cout << "ipvec:\t" << *ipvec[i] << endl;
}
Output
ivec: 0
*ipvec: -572662307
ivec: 1
*ipvec: -572662307
ivec: 2
*ipvec: 2
Variation #2
int num = 3;
vector<int> ivec;
vector<int*> ipvec;
for (int i = 0; i != num; ++i)
ivec.push_back(i);
for (int i = 0; i != num; ++i)
ipvec.push_back(&ivec[i]);
for (int i = 0; i != num; ++i)
{
cout << "ivec:\t" << ivec[i] << endl;
cout << "*ipvec:\t" << *ipvec[i] << endl;
}
Output
ivec: 0
*ipvec: 0
ivec: 1
*ipvec: 1
ivec: 2
*ipvec: 2