используя вложенный вектор в C ++ - PullRequest
1 голос
/ 25 января 2012

Я пытаюсь реализовать 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 ]

9 голосов
/ 25 января 2012

Попробуйте изменить:

*it1.begin()

на

it1->begin()
8 голосов
/ 25 января 2012

Он анализируется как *(it1.begin()), а не (*it1).begin(). Измените его на it1->begin().

1 голос
/ 25 января 2012

Проблема в строке, содержащей *itr.begin().Измените его на itr->begin().Таким образом, вы не получите никаких ошибок.

...