2010-11-12 90 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

相关问题