нет совпадения для 'operator =' (типы операндов: __gnu_cxx :: __ alloc_traits > - PullRequest
1 голос
/ 20 марта 2020

Я новичок в C ++. Я пытаюсь сделать массив двухмерных динамических c (вектор) указателей, который указывает на массив двумерных динамических c, который содержит символы. Мне нужно понять логику c, поскольку я хочу реализовать ее в моем назначенном проекте. У меня очень слабая основа в указателях. введите описание изображения здесь

#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);
    }
}

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Проблема здесь в том, что vector<vector<int>> * pointer; - это указатель на вектор векторов. Это отличается от того, что вы положили в эту строку:

pointer[i][j] = &arry[i][j];

Здесь вы устанавливаете позицию в вашем векторе как указатель на int. То есть &arry[i][j] - это int *. pointer, с другой стороны, является std::vector<std::vector<int *>>. Компилятор не знает, что делать для преобразования этих двух значений друг в друга.

То, что вы на самом деле хотите, чтобы pointer был std::vector<std::vector<int *>>:

std::vector<std::vector<int *>> pointer;
0 голосов
/ 20 марта 2020

Если вы хотите сохранить двумерный массив указателей, как здесь

pointer[i][j] = &arry[i][j];

, тогда для этого нужна подпись

vector<vector<int*>> pointer;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...