为二维vector进行赋值

在练习过程中遇到了使用二维vector的情况,不想用下标访问的方式,迭代器方式摸索了好长时间,问了学长才知道。

我犯了以下错误:

1、没有指定vector的大小,就进行了下标和迭代器访问;

2、通过第一层的迭代器it_vv访问第二层的时候,用的“.”访问而不是“->”访问,迭代器的使用和指针一样,这一点忘记了。


首先需要指定vector的大小,如果不知道大小的话是不能进行下标或者迭代器访问的。

cin >> M >> N;

vector> m(M,vector(N));

vector>dp(M,vector(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;
	}
}

你可能感兴趣的:(C++)