2011-11-24 4 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:ERROR: 'で '演算子< <' の不一致をstd :: cout < < *(vecptr +((符号なし整数)(符号なし整数)i)*)1210)それを修正するために私は何ができますか?

答えて

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する必要があります。

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

あなたはまた、vecptrを初期化する必要があります。

関連する問題