2011-11-24 39 views
5

vektör:Pointer Bu kodu var

#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; 
} 

Benim derleyici (G ++) bana bazı hatalar atmak: test2.cpp: 28: 17: hatası: 'in 'operatörü < <' için eşleşme std :: cout < < * (vecptr + ((imzasız int) (((imzasız int) i) * 12u))) '...

Neyin var? Düzeltmek için ne yapabilirim?

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

Ayrıca vecptr başlatmak gerekecektir:

cevap

9

Program hala tam olarak doğru değil. Vektör işaretçisini başlatmanız ve sonra bir boyut vermeniz ve kullanmanız gerekir. Tam çalışan bir kod,

#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; 
} 

Tam boyutta olsa da, boyutu 10 olarak belirttiğim halde, bunu bir varyant haline getirebilirsiniz.

5

Alttaki vektör almak için dereference vecptr burada gerekir.