![](/img/trans.png)
[英]cannot convert ‘std::vector<double>*’ to ‘__gnu_cxx::__alloc_traits<std::allocator<double*>, double*>::value_type’ {aka ‘double*’}
[英]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 *
。 另一方面, pointer
是std::vector<std::vector<int *>>
。 編譯器不知道如何將這兩個相互轉換。
您實際上似乎想要的是pointer
是std::vector<std::vector<int *>>
:
std::vector<std::vector<int *>> pointer;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.