[英]Accessing pointers of vector elements
我有这个结构:
struct povezava{
int p;
int q;
int cena;
int index;
};
这个向量包含指向结构的指针
vector<povezava*> povezave;
我必须从文本文件中读取信息,然后将值指定给向量的元素
while(graf >> p1 >> q1 >> cena1){
povezave[counter]->p=p1;
povezave[counter]->q=q1;
counter++;
}
但是当我尝试访问这些元素时出现错误,我猜测是因为尚未定义它们? 任务说我必须使用静态数据结构,但这是不可能的,因为数组的大小取决于图中的数字。 我是使用动态分配的唯一选择吗?(我真的不想这么做)。
但是当我尝试访问这些元素时出现错误,我猜测是因为尚未定义它们?
那就对了。 您需要创建元素。 幸运的是,这确实很容易,应该在您的C ++书籍中进行早期演示。
while(graf >> p1 >> q1 >> cena1){
povezava newElement;
newElement.p = p1;
newElement.q = q1;
povezave.push_back(newElement);
}
在此示例中,我还假设将向量更改为std::vector<povezava>
,因为您没有理由不这样做。
您应该走得更远,并更改其真正令人困惑的名称。
我是使用动态分配的唯一选择吗?(我真的不想这么做)。
好吧,您已经是(或者至少会是)。 向量动态分配其元素。
任务说我必须使用静态数据结构,但这是不可能的,因为数组的大小取决于图中的数字。
根据模糊要求的含义,可能无法使用向量。
如果不为vector
的元素分配内存,则不能使用它们(设置元素的成员,...)。
但是最好的解决方案是在vector
内部具有静态分配的变量:
vector<povezava> povezave;
当然,这意味着您必须将->
更改为.
因为该成员不再是指针。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.