2012-11-08 2 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") 

:

  • 역 참조 tempvector<vector<string> > &
  • 가 첫 번째 요소를 얻을 얻을하는 vector<string> &
  • 사용 . 대신 -> 당신 때문에 ' 다시 temp[0].push_back("hello") : someFunction 대신 포인터의 vector< vector<string> >&했다 경우 말했다 이상 처리 포인터

오, 그것은 쉽게 될 것입니다. 참조는 포인터 산술이나 널 포인터를 허용하지 않으므로 엉망이되기가 더 어렵고 필요한 실제 입력 유형을 더 암시합니다 (하나의 문자 또는 배열이 아닌 단일 vector).

+0

아 맞습니다. (* temp)는 벡터를 건드린 이후로 꽤 오래되었습니다. 감사! :) – mister