在练习过程中遇到了使用二维vector的情况,不想用下标访问的方式,迭代器方式摸索了好长时间,问了学长才知道。
我犯了以下错误:
1、没有指定vector的大小,就进行了下标和迭代器访问;
2、通过第一层的迭代器it_vv访问第二层的时候,用的“.”访问而不是“->”访问,迭代器的使用和指针一样,这一点忘记了。
首先需要指定vector的大小,如果不知道大小的话是不能进行下标或者迭代器访问的。
cin >> M >> N;
vector<vector<int>> m(M,vector<int>(N));
vector<vector<int>>dp(M,vector<int>(N));
然后就可以通过下标访问或者迭代器访问。
/*使用数组方式赋值*/
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
cin >> m[i][j];
}
}
/*使用迭代器方式赋值*/
for (auto it_vv = m.begin(); it_vv != m.end(); ++it_vv) {
for (auto it_v = it_vv->begin(); it_v != it_vv->end(); it_v++) { //迭代器的使用方法和指针类似
cin >> *it_v;
}
}