簡體   English   中英

不匹配 &#39;operator=&#39;(操作數類型是 &#39;__gnu_cxx::__alloc_traits <std::allocator<std::vector<int> &gt; &gt;

[英]no match for 'operator=' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> > >

我是 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);
    }
}

如果你想像這里一樣保留一個二維指針數組

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

那么這需要簽名

vector<vector<int*>> pointer;

這里的問題是vector<vector<int>> * pointer; 是指向向量向量的指針。 這與您在此行中放置的內容不同:

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

在這里,您將向量中的位置設置為指向 int 的指針。 也就是說, &arry[i][j]是一個int * 另一方面, pointerstd::vector<std::vector<int *>> 編譯器不知道如何將這兩個相互轉換。

您實際上似乎想要的是pointerstd::vector<std::vector<int *>>

std::vector<std::vector<int *>> pointer;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 無法轉換 'std::vector<double> *' 到 '__gnu_cxx::__alloc_traits <std::allocator<double*> , double*&gt;::value_type' {aka 'double*'} </std::allocator<double*></double> 無法轉換&#39;std :: optional <int> &#39;to&#39;__gnu_cxx :: __ alloc_traits <std::allocator<char> &gt; :: value_type {aka char}&#39; 錯誤:對於操作數類型 std::vector::iterator 和 __gnu_cxx::__normal_iterator 不匹配“operator=” v <int> pos(MAX)v <int> tmp哪個是非類型&#39;__gnu_cxx :: __ alloc_traits <std::allocator<int> &gt; :: value_type {aka int}&#39;pos [i] .push_back(tmp); 錯誤:來自 &#39;__gnu_cxx::__alloc_traits 的無效轉換<std::allocator<char> , char&gt;::value_type&#39; {aka &#39;char&#39;} 到 &#39;const char*&#39; [-fpermissive] 反向迭代器錯誤:&#39;rcit!= std :: vector &lt;_Tp,_Alloc&gt; :: rend()中的&#39;operator!=&#39;與_Tp = int,_Alloc = std :: allocator&#39;不匹配 錯誤:'operator+' 不匹配(操作數類型是 'std::vector<int> ' 和 'int')</int> 錯誤:無法轉換 '__gnu_cxx::__normal_iterator <player*, std::vector<player> &gt;' 到 'int' 作為回報</player*,> 錯誤:'operator+' 不匹配(操作數類型為 'std::__cxx11::list<int> ' 和 'int')|</int> 我該如何解決? (錯誤:'operator==' 不匹配(操作數類型是 'std::string' {aka 'std::__cxx11::basic_string'} 和 'int')
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM