访问矢量元素的指针

时间:2017-05-17 15:52:58

标签: c++ pointers vector

我有这个结构:

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++;

    }

但是当我尝试访问这些元素时出现错误,我猜是因为它们尚未定义?任务说我必须使用静态数据结构,但这是不可能的,因为数组的大小取决于图中的数字。我唯一的选择是使用动态分配吗?(我真的不想)。

2 个答案:

答案 0 :(得分:0)

  

但是当我尝试访问这些元素时出现错误,我猜是因为它们尚未定义?

那是对的。您需要创建元素。幸运的是,这非常简单,应该在C ++书籍的早期进行演示。

while(graf >> p1 >> q1 >> cena1){
    povezava newElement;
    newElement.p = p1;
    newElement.q = q1;

    povezave.push_back(newElement);
}

在这个示例中,我还假设向量已更改为std::vector<povezava>,因为您没有给出任何理由。

你应该更进一步,改变它真正令人困惑的名字。

  

我唯一的选择是使用动态分配吗?(我真的不想)。

嗯,你已经(或者,至少,你会)。向量动态分配其元素。

  

任务说我必须使用静态数据结构,但这是不可能的,因为数组的大小取决于图中的数字。

根据这个模糊的要求意味着什么,你可能无法使用矢量。

答案 1 :(得分:0)

如果您没有为vector的元素分配内存,则无法使用它们(设置元素的成员,......)。

但最好的解决方案是在vector

中设置静态分配的变量
vector<povezava> povezave;

当然,这意味着您必须将->更改为.,因为该成员不再是指针。