gpt4 book ai didi

c++ - 'operator='不匹配(操作数类型为'__gnu_cxx::__ alloc_traits >>

转载 作者:行者123 更新时间:2023-12-02 10:34:48 27 4
gpt4 key购买 nike

我是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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com