2011-05-29 22 views
-1

我已經定義了一個動態內存作爲*索引(向量矢量)來存儲一組值。然後,我附加了這個記憶。之後,我想獲得這些值的打印。爲此,我正在使用另一個功能,如下所示。對於那個函數,我通過引用調用上面的值。我不知道使用迭代器打印這些值的正確方法。 這是我的代碼和我得到的錯誤。如何使用「迭代器」進行引用調用?

vector< vector<unsigned int> >* indexs = new vector< vector<unsigned int> >(9); 
for(){  //finish data adding into indexs  } 
calcParameter(*indexs); //call function 
void myclass::calcParameter(vector< vector<unsigned int> >const &indexs){ 
    vector< vector<unsigned int> > :: iterator cell_i; 
    for (cell_i=indexs->begin(); cell_i != indexs->end();cell_i++){ //this is line 305 in my program 
     vector<unsigned int> :: iterator pij; 
     for (pij=cell_i->begin(); pij =! cell_i->end(); pij++){ 
      cout<<" "<<*pij; 
     } 
     cout<<endl; 
    } 
} 

error message: 305-base operand of `->' has non-pointer type `const 
std::vector<std::vector<unsigned int, std::allocator<unsigned int> >, 
std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >' 

當我使用簡單的循環來獲得它,它的工作原理,但我想學習如何使用迭代器。

void myclass::calcParameter(vector< vector<unsigned int> >const &indexs){ 
    for (int i=0; i<indexs.size(); i++){ 

     for (int j=0; j< indexs[i].size(); j++){ 

      cout<<" "<<indexs[i][j]; 
     } 
     cout<<endl; 
    } 
} 

任何幫助,請..

+2

你的代碼是完全不可讀的,你很難理解。請儘量讓它更清晰。 – 2011-05-29 16:57:46

回答

2

indexs不是指針,它是一個參考,僅此而已。你需要說

indexs.begin() 

,而不是

indexs->begin() 

(ETC)。

+0

@hill >>謝謝,但它不起作用。我想知道什麼時候我已經定義了一個動態內存分配,如果我將這個內存調用爲一個函數作爲參考輸入,那麼我可以使用迭代器來查看函數內部的數據嗎? – niro 2011-06-03 01:27:53

+0

對不起,我不知道你在問什麼? – 2011-06-03 02:10:17