2011-05-29 82 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