使用C++中的嵌套向量

using a nested vector in C++

本文关键字:嵌套 向量 C++ 使用      更新时间:2023-10-16

我正试图在C++中的vector<Type>中实现vector<int>。然而,每当我运行以下代码时,我都会在读取时出错

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

任何形式的帮助都将不胜感激。

尝试更改:

*it1.begin()

it1->begin()

它被解析为*(it1.begin()),而不是(*it1).begin()。将其更改为it1->begin()

问题出现在包含*itr.begin()的行中。将其更改为itr->begin()。这样,您就不会出现任何错误。