2012-01-25 10 views
1

vector<int>をC++のvector<Type>に実装しようとしています。C++でネストされたベクトルを使用

#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; 
} 

ヘルプの任意のタイプを高く評価されています。しかし、私は、次のコードを実行するたびに、私はここで

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

を読んでエラーを取得するコードです。

+3

'(* it1).begin()'(または 'it1-> begin()') – Nemo

答えて

9

は変更してみてください:

it1->begin() 
8

*it1.begin() 

をそれは*(it1.begin())、ない(*it1).begin()として解析されています。それをit1->begin()に変更します。

1

問題は、*itr.begin()を含む行にあります。それをitr->begin()に変更します。この方法では、エラーは発生しません。

関連する問題