Babis Haldas wrote:
Can you please tell me whats wrong with the follow code
Its crasing in the line
cout << v[0]->x1 << endl;
when accesing the first element of the vector
If i define the vector as
vector<foo*>v ;
everything is ok
why it doesnt like v(10) ?
Because if you don't specify the size, it creates an *empty* vector,
in which you later insert the *real* (non-null) element, which you
later access.
thanks
#include <iostream>
#include <vector>
using namespace std;
struct foo {
int x1;
int x2;
};
int main()
{
vector<foo*> v(10);
That creates a ten-sized vector of pointers to 'foo', each null (IIRC).
foo * p;
p = new foo;
p->x1 = 111;
p->x2 = 222;
v.push_back(p);
That inserts *yet another* pointer to 'foo' at the end of the vector.
cout << v[0]->x1 << endl;
v[0] is a null pointer. You try dereferencing it. Undefined behaviour.
}
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask