簡體   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