【发布时间】:2020-07-01 22:15:09
【问题描述】:
我是 C++ 新手。我正在尝试制作指向包含字符的二维动态数组的指针的二维动态数组(向量)。我需要了解逻辑,因为我想在分配的项目中实现它。我的指针基础很薄弱。enter image description here
#include<vector>
#include <iostream>
using namespace std;
vector<vector<int>> * pointer;
int matX = 2;
int matY = 2;
void mkPMat(vector<vector<int>> &);
void update();
int main(){
vector<vector<int>> arr;
int a;
for(int i =0; i<matX; i++){
vector<int> temp;
for(int j =0; j<matY; j++){
cout<<"Enter the charactyer"<<endl;
cin>>a;
temp.push_back(a);
}
arr.push_back(temp);
}
mkPMat(arr);
}
void mkPMat(vector<vector<int>>& arry){
for(int i =0; i<matX; i++){
vector<int*> tp;
for(int j =0; j<matY; j++){
tp.push_back(&arry[i][j]);
}
pointer.push_back(tp);
}
}
【问题讨论】:
-
不是你的问题,但无论如何你很快就会遇到它,
vector<vector<int>> arr;本身并不分配任何内存。因此,cin>>arr[i][j]将在您的程序编译后崩溃。 -
那我该如何解决呢?我刚刚运行了我的代码,它就像你提到的那样崩溃了。我在这里错过了什么?
-
你需要
resize()orreserve()来做到这一点。我想可能是resize()。 -
顺便说一句:
arry和pointer都需要调整大小。
标签: c++ pointers multidimensional-array vector