我有这个结构:
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++;
}
但是当我尝试访问这些元素时出现错误,我猜是因为它们尚未定义?任务说我必须使用静态数据结构,但这是不可能的,因为数组的大小取决于图中的数字。我唯一的选择是使用动态分配吗?(我真的不想)。
答案 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;
当然,这意味着您必须将->
更改为.
,因为该成员不再是指针。