繁体   English   中英

访问向量元素的指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM