2010-11-12 39 views
1

我倒是喜歡用向量::指針,以便在它的push_back數據..如何通過vector :: pointer在vector中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 

好像沒有任何工作..任何想法,將不勝感激..

+1

如果你是新來的C++語言不要羞於問這樣的問題在這裏。如果我在學習C++時有過這樣的資源,它會爲我節省很多時間和困難。一本好的介紹性書籍也是可取的。 – 2010-11-12 17:07:38

回答

1

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

如果你想有一個指針指向一個向量,你可以做到以下幾點:

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

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

作爲一種意見,vector<int>::pointer在你的代碼的類型應該是int *

+0

謝謝你們所有的答案..現在我明白了..問題已經解決!我對C++並不陌生,向量對我來說是新的,我有點生疏! (臉紅) – 2010-11-12 17:14:06

+0

@Mary P:很高興幫助。在Stack Overflow中,一旦找到適合您的答案,就要求您將答案標記爲正確的答案。在每個答案的投票部分下面,應該有一個複選標記的大綱,可以用來接受答案。 – 2010-11-12 17:30:17

1

在這種情況下ptrint*不是指向vector<int>的指針,所以它不能執行向量操作。當你作出任務:

ptr = &v[0]; 

你指定的地址包含整數在v [0],而不是分配一個引用的向量。做你想做什麼,你需要做到以下幾點:

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

ptr = &v; 

ptr->push_back(num); 
4

你是誤會什麼vector::pointer是。這是一個指向vector中元素的指針,而不是指向vector的指針。

除此之外,我不清楚爲什麼你要這樣做,因爲.符號工作得很好,並且可以節省你對每次訪問的指針解引用。如果您發現自己正在輸入vector<int> *vecPtr = new vector<int>;,請深吸一口氣並詢問爲什麼您不能使用RAII

相關問題