2012-11-08 97 views
0

我有以下多维向量多维向量指针

int main() 
{ 
    vector< vector<string> > tempVec; 

    someFunction(&tempVec); 
} 

void someFunction(vector< vector<string> > *temp) 
{ 
    //this does not work 
    temp[0]->push_back("hello"); 
} 

我如何将数据推入载体时,我有一个向量的指针? 下面的代码不起作用。

temp[0]->push_back("hello"); 
+2

你可能想要通过引用来获取整个事物,并使用点而不是箭头。 – chris

+0

@chris对不起编辑。 – mister

回答

1

你需要

(*temp)[0].push_back("hello") 

这就是:

  • 提领temp获得vector<vector<string> > &
  • 获得第一个元素,一个vector<string> &
  • 使用.代替->因为你” re temp[0].push_back("hello"):○不再处理指针

也就是说,如果someFunction拿了vector< vector<string> >&,而不是一个指针会更容易些。引用不允许指针算术或空指针,因此它们使得它更难以搞砸,并且更暗示所需的实际输入类型(单个vector,而不是可选的或它们的阵列)。

+0

哦,那就是那个! (* temp)已经相当长一段时间了,因为我碰到了矢量。谢谢! :) – mister