簡體   English   中英

std :: vector指針

[英]std::vector pointer

我有一個問題,如果我有一個STL向量,我可以這樣寫:

std::vector<int> *p;

但是我無法決定是否在任何情況下都會使用它? 如果我用p調整指針所指向的向量的大小,在這種情況下指針p也會發生什么?

我在這里聽起來可能很愚蠢,但是這些問題只在腦海中浮現,我能夠在g ++中編譯std::vector<int> *p東西。

通過說:

std::vector *p;

您正在聲明一個指向Vector的指針。 現在,您需要分配存儲位置來保存Vector對象的存儲內容,而不是單個元素。 之后,您可以根據自己的意願隨意添加,刪除,刪除和更新單個元素。

至於調整向量的大小,所引用的內存p不會發生任何變化,只有與Vector對象有關的內存內容會改變。

這種結構的一種用途是具有向量的動態數組。 假設您需要維護節點的鄰接列表,但是您不確定在運行時之前會出現多少個節點。

如果要在運行時從多個向量中選擇一個特定向量,則可以使用指向向量的指針,即要動態選擇它。

關於“調整大小”問題:正如向量指針受resize()影響嗎? 狀態,只要向量存在,指向向量本身的指針就有效。 但是指向向量元素的指針可能會更改。 例如:

std::vector<int> v;
std::vector<int> *p;
p = &v; // Does not change

int *pe;
pe = &v[0]; // May change

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM