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