我有一个结构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
,它运行正常。
那么为什么我不能使用第一种方式而不是第二种方式进入矢量?
答案 0 :(得分:4)
要创建大小为n
的向量,请使用括号,而不是方括号。
vector<coord> v(n);
使用括号创建一个n
向量数组,而不是带有n
坐标的向量。
答案 1 :(得分:3)
您声明了一个向量数组,而不是单个向量,因此v[n]
返回一个向量。您应该使用size_t
参数调用构造函数。
vector<coord> v(size);