2012-11-08 138 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