我是C++的新手。我正在尝试使指针的2 D动态数组( vector )指向包含字符的2 D动态数组。我想了解逻辑,因为我想在分配的项目上实现它。我的指针基础很弱。 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>> * pointer;
是指向 vector vector 的指针。这与您在这一行上所做的不同:
pointer[i][j] = &arry[i][j];
在这里,您将 vector 中的位置设置为指向int的指针。也就是说,
&arry[i][j]
是int *
。另一方面,pointer
是std::vector<std::vector<int *>>
。编译器不知道如何将这两个相互转换。您实际上想要的是将
pointer
变成std::vector<std::vector<int *>>
:std::vector<std::vector<int *>> pointer;
关于c++ - 'operator='不匹配(操作数类型为'__gnu_cxx::__ alloc_traits <std::allocator <std::vector <int>>>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60779863/