1

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

struct coord
{
   int x1;
   int x2;
};

vector<coord> v[n];

现在,当我尝试将某些东西(在向量声明之后)放入vectorv时,v[0].x1=2编译器会给出一个错误提示

'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,它工作正常。

那么为什么我不能使用第一种方式而是第二种方式放入向量中呢?

4

2 回答 2

4

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

vector<coord> v(n);

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

于 2013-02-26T04:15:50.773 回答
3

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

vector<coord> v(size); 
于 2013-02-26T04:16:15.563 回答