2011-11-24 9 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; 
} 

मेरे संकलक (जी ++) मुझे कुछ त्रुटियों फेंक: test2.cpp: 28: 17: त्रुटि: में '' ऑपरेटर < < 'के लिए कोई मुकाबला नहीं std :: cout < < * (vecptr + ((हस्ताक्षरित int) (((हस्ताक्षरित int) i) * 12u))) ...

क्या गलत है? इसे ठीक करने के लिए मुझे क्या करना होगा?

उत्तर

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 प्रारंभ करने की आवश्यकता होगी।

संबंधित मुद्दे