2011-11-24 24 views
5

Tengo este código:puntero de servir como vector

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

Mi compilador (G ++) tirarme algunos errores: test2.cpp: 28: 17: error: no puede competir con 'operador < <' en ' std :: cout < < * (vecptr + ((unsigned int) (((unsigned int) i) * 12u))) '...

¿Qué pasa? ¿Que puedo hacer para arreglarlo?

Respuesta

9

El programa aún no está del todo bien. Tienes que inicializar el puntero del vector y luego darle un tamaño y usarlo. Un código de trabajo completo podría ser,

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

Aunque he mencionado el tamaño como 10, podría hacer una variante.

5

Necesitas eliminar la referencia vecptr aquí para obtener el vector de fondo:

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

También necesitará inicializar vecptr.

Cuestiones relacionadas