簡體   English   中英

如何通過vector :: pointer將向量中的數據push_back?

[英]How can I push_back data in a vector via a vector::pointer?

我想使用vector :: pointer以便在其中push_back數據。

int num;
vector<int> v;
vector<int>::pointer ptr;

ptr = &v[0];

ptr->push_back(num);  // fail
ptr.push_back(num);  // fail
ptr.push_back(&num);  // fail
*ptr.push_back(num);  // fail

沒有任何效果。.任何想法將不勝感激..

您誤解了vector :: pointer是什么。 這是指向向量中元素的指針的類型,而不是向量本身的指針。

除此之外,我不清楚您為什么以后要這么做. 記法工作得很好,並且可以節省每次訪問時指針的取消引用。 如果您發現自己輸入vector<int> *vecPtr = new vector<int>; ,深吸一口氣,問為什么你不能使用RAII

你不能 您需要使用原始矢量對象。

如果您想要一個指向矢量的指針,則可以執行以下操作:

vector<int> v;
vector<int> *pointer = &v;

v.push_back(4);
pointer->push_back(3);

作為注釋,代碼中vector<int>::pointer的類型應為int *

在這種情況下, ptrint*而不是指向vector<int>的指針,因此它無法執行向量運算。 進行作業時:

ptr = &v[0];

您正在將指針分配給包含v [0]處的整數的地址,而不是對向量的引用。 要執行您想要的操作,您需要執行以下操作:

int num;
vector<int> v;
vector<int>* ptr;

ptr = &v;

ptr->push_back(num);

暫無
暫無

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

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