在C++

2012-01-25 75 views
1

使用嵌套向量我想用C實現vector<int>vector<Type> ++。然而,每當我運行下面的代碼,我得到一個錯誤讀取在C++

std::vector<std::vector<int> >::const_iterator’ has no member named ‘begin’ 
std::vector<std::vector<int> >::const_iterator’ has no member named ‘end’ 

下面是代碼:

#include <iostream> 
#include <algorithm> 
#include <vector> 
#include <string> 

using namespace std; 

typedef vector<int> vector1D ; 
typedef vector<vector1D > vector2D ; 

void showarr(const vector2D& v) 
{ 
    for (vector<vector1D >::const_iterator it1 = v.begin(); it1 != v.end(); ++it1) { 
     for(vector<int>::const_iterator it2 = *it1.begin(); it2 != *it1.end(); ++it2) { 
      cout<<*it2<<endl; 
     } 
    } 
} 
int main(int argc, char *argv[]) 
{ 
    int rownum; 
    cin>>rownum; 
    vector2D a; 
    for (int i = 0 ; i < rownum ; i++) { 
     a.push_back(vector1D(rownum,0)); 
    } 
    showarr(a); 
    return 0; 
} 

任何類型的幫助表示讚賞。

+3

'(* IT1).begin()'(或'it1->開始()') – Nemo

回答

9

嘗試改變:

*it1.begin() 

it1->begin() 
8

它被解析爲*(it1.begin()),不(*it1).begin()。將其更改爲it1->begin()

1

的問題是在含有*itr.begin()線。將其更改爲itr->begin()。這樣,你不會得到任何錯誤。