为二维vector进行赋值

来源:互联网 发布:windows db2 编辑:程序博客网 时间:2024/06/06 17:49

在练习过程中遇到了使用二维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;}}