我是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 *。另一方面,pointerstd::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/

10-17 01:29