2011-11-24 2 views
5

벡터에 :포인터는이 코드를 가지고

#include <iostream> 
#include <string> 
#include <vector> 

using namespace std; 

vector<string> *vecptr; 
int veclen; 

void getinput() 
{ 
string temp; 
for(int i = 0; i < 3; i++) 
    { 
    cin>>temp; 
    vecptr->push_back(temp); 
    } 
    veclen = vecptr->size(); 
} 


int main() 
{ 
getinput(); 

    for(int i = 0; i < veclen; i++) 
    { 
    cout<<vecptr[i]<<endl; 
    } 

return 0; 
} 

제 컴파일러 (G ++) 나에게 몇 가지 오류 던져 : test2.cpp : 28 : 17 : 오류 : '에서'연산자 < < '아무 짝을 std :: cout < < * (vecptr + ((부호없는 int) (부호없는 int) i) * 12u)) '...

무엇이 잘못 되었습니까? 문제를 해결하려면 어떻게해야합니까?

cout << (*vecptr)[i] << endl; 

또한 vecptr를 초기화해야합니다

답변

9

프로그램이 여전히 완전하지 않습니다. 벡터 포인터를 초기화 한 다음 크기를주고 사용하십시오. 전체 작업 코드는 다음과 같을 수 있습니다.

#include <iostream> 
#include <string> 
#include <vector> 

using namespace std; 

vector<string> *vecptr = new vector<string>(10); 
int veclen; 

void getinput() 
{ 
string temp; 
for(int i = 0; i < 3; i++) 
    { 
    cin>>temp; 
    (*vecptr)[i] = temp; 
    } 
    veclen = (*vecptr).size(); 
} 


int main() 
{ 
getinput(); 

    for(int i = 0; i < veclen; i++) 
    { 
    cout<<(*vecptr)[i]<<endl; 
    } 

return 0; 
} 

크기를 10으로 언급했는데 변형이 가능합니다.

5

당신은 기본 벡터를 얻기 위해 역 참조 vecptr 여기에 필요합니다.

관련 문제