2011-11-24 134 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 ++)把我的一些錯誤:測試2.cpp:28:17:錯誤:'敵不過 '操作< <' std :: cout < *(vecptr +((unsigned int)(((unsigned 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