为二维vector进行赋值
在练习过程中遇到了使用二维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; } }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: C++ vector之创建二维数组
- 下一篇: c++ STL中怎么定义一个二维向量(vector)