向量中对象的内存分配

时间:2013-02-26 04:14:47

标签: c++ stl

我有一个结构coord和一个包含coord类型对象的向量:

struct coord
{
   int x1;
   int x2;
};

vector<coord> v[n];

现在,当我尝试使用vector将某些内容(在向量声明之后)放入v[0].x1=2 v时,编译器会出错提示

'class std::vector<coord, std::allocator<coord> > has no member named x1'

但是当我使用temp类型的coord对象来存储坐标时,请定义像

这样的矢量
vector<coord> v   //i.e without specifying size of vector

,将其推入向量,然后尝试访问v[0].x1,它运行正常。

那么为什么我不能使用第一种方式而不是第二种方式进入矢量?

2 个答案:

答案 0 :(得分:4)

要创建大小为n的向量,请使用括号,而不是方括号。

vector<coord> v(n);

使用括号创建一个n向量数组,而不是带有n坐标的向量。

答案 1 :(得分:3)

您声明了一个向量数组,而不是单个向量,因此v[n]返回一个向量。您应该使用size_t参数调用构造函数。

vector<coord> v(size);